2013-10-25 39 views
2
工作

考慮這個TSQLLIKE不TSQL

declare @b varchar(100) 

set @b = 'BANK-41' 

IF @b LIKE 'BANK_%' 
BEGIN 
    print 'Wrong Matching' 
END 

爲什麼TSQL匹配字符串 「BANK-」 和 「BANK_」?

回答

2

您需要轉義「_」。這是Like語句的特殊字符。你可以把它放在[]中。

請參閱LIKE (Transact-SQL)

+0

謝謝你的幫助。瞭解這一點非常有幫助。 – user2921359

3

我認爲SQL Server中的下劃線是爲通配符保留的。您需要轉義它。我認爲您可以將它放在括號中:

%[_]% 
+0

謝謝你的幫助。瞭解這一點非常有幫助。 – user2921359

1

嘗試​​:

SELECT 
    x.Col1, 
    CASE WHEN x.Col1 LIKE 'BANK_%' THEN 1 ELSE 0 END AS Test#1, 
    CASE WHEN x.Col1 LIKE 'BANK\_%' ESCAPE '\' THEN 1 ELSE 0 END AS Test#2 
FROM (
    SELECT 'BANK-41' UNION ALL 
    SELECT 'BANK_41' 
) x(Col1); 

結果:

Col1 Test#1  Test#2 
------- ----------- ----------- 
BANK-41 1   0 
BANK_41 1   1