2015-08-27 14 views
5

Bu neden çalışmıyor?SQL server "IF variable LIKE pattern" öğesini kullanıyor

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

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

ama bu

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

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

ancak bu çalışmıyor çalışır neden bu

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

GÜNCELLEME

çalışır?

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

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

Düzenlemenizle ilgili olarak https://connect.microsoft.com/SQLServer/feed adresine bakın. geri/Ayrıntılar/742841/pattern-sözdizimi-belgesiz-fark-in-davranış-varchar-vs-nvarchar –

+0

Çok teşekkür ederim – Fallflame

cevap

4

Değişken tipi uzunluğuna ekleyin.

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

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

sizin varchar

boyutunu ilan deneyin:
DECLARE @str varchar = '######' 

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

(örtülü cast '#' için değişecektir)

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

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

Bu çalışacaktır aynıdır

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

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