2009-04-16 160 views
0

我有如下表結構,我的數據庫奇怪的行爲

ID    Name 
-------------------------- 
ID_1    Name1 

ID1    Name2 

當我執行

SELECT * FROM tblNames 
WHERE ID LIKE '_1' 

我獲得選擇兩個記錄下面的查詢......

任何建議如何擺脫它?

回答

5

下劃線(_)是LIKE表達式中與單個字符匹配的特殊字符。

要符合實際的下劃線,你需要逃避它:

select * from tblNames where id like '%\_1' escape '\' 

在這裏,我要告訴SQL Server來考慮反斜槓轉義字符,並用它來逃脫下劃線。

或者,你可以代表下劃線的字符範圍在它的單個字符 - 它會從字面上在這種情況下進行解釋:

select * from tblNames where id like '%[_]1' 

哪個更簡潔一點。

參考:MSDN

0
 
SELECT * FROM tblNames 
WHERE ID LIKE '[_]1' 
2

LIKE operator

晨間:_是通配符匹配任何東西。

SELECT * FROM tblNames 
WHERE ID LIKE '\_1' ESCAPE '\' 
0

下劃線字符是like運算符的通配符,它​​匹配任何一個字符。在你的情況下,模式'_1'與數據中的'_1'和'D1'都匹配。

SELECT * FROM tblNames 
WHERE ID LIKE '[_]1' 

爲了使之成爲只包含一個字符的字符範圍內使用,你需要把它周圍的支架圖案的文字下劃線