2015-08-27 5 views
5

Warum funktioniert das nicht?SQL-Server verwenden "IF-Variable LIKE Muster"

DECLARE @str varchar = '######' 

IF @str LIKE '%###%' SELECT 1 

aber das funktioniert

IF '######' LIKE '%###%' SELECT 1 

UPDATE

warum diese

arbeitet
DECLARE @Comment varchar(255) = '[A-B-C-D]' 

IF @Comment LIKE '%[%-%-%-%]%' SELECT 1 

aber das funktioniert nicht?

DECLARE @Comment nvarchar(255) = '[A-B-C-D]' 

IF @Comment LIKE '%[%-%-%-%]%' SELECT 1 
+0

In Bezug auf Ihre Bearbeitung finden Sie unter https://connect.microsoft.com/SQLServer/feed zurück/details/742841/pattern-syntax-undokumentiert-unterschied-zwischen-varchar-vs-varchar –

+0

Vielen Dank – Fallflame

Antwort

4

auf Ihre Variablentyp Länge hinzufügen.

DECLARE @str varchar = '######' 

IF @str LIKE '%###%' SELECT 1 

ist das gleiche wie (implizite Umwandlung wird es auf '#' ändern)

DECLARE @str varchar(1) = '######' 

/* IF '#' LIKE '%###%' SELECT 1 */ 
IF @str LIKE '%###%' SELECT 1 

Diese Arbeit wird:

DECLARE @str varchar(20) = '######' 

IF @str LIKE '%###%' SELECT 1 
2

versuchen, die Größe Ihrer varchar erklärt

DECLARE @str varchar(50) = '######' 

SELECT 1 WHERE @str LIKE '%###%'