2011-09-17 32 views
1

我在Sql Server 2000中有一個名爲Table1的表,有幾列,其中一列是varchar(255),名爲'Col5'。關於在SQL Server 2000的varchar列中搜索'['

如果該列中的某一行是[test],則顯示內容。

當我嘗試使用LIKE運算符來測試此字符串的一部分時,我無法以任何方式搜索[

這就是我得到:

1-試圖SELECT * FROM Table1 WHERE Col1 LIKE '%[%'回報NO結果。

2-嘗試SELECT * FROM Table1 WHERE Col1 LIKE '%[t%'返回結果。

3-嘗試SELECT * FROM Table1 WHERE Col1 LIKE '%t]%'返回1個結果,如預期的那樣。

4-嘗試SELECT * FROM Table1 WHERE Col1 LIKE '%test%'返回1結果,如預期。

這是一個奇怪的行爲,它是一個錯誤,發生了什麼,有什麼想法?

回答

2

該字符有特殊的含義the pattern syntax,需要通過定義明確的轉義字符

where Col1 like '%/[%' ESCAPE '/' 

或通過使用更多的方括號

where Col1 like '%[[]%' 

除了其逃脫的作用進行轉義要麼在定義要匹配的範圍或字符集時,在語法中使用它。例如LIKE '[0-9]%'查找以數字開頭的所有值。

當範圍或集合沒有被]關閉時,它看起來好像SQL Server剛剛添加一個到結尾。因此c like '%[%'被視爲c like '%[%]'並查找包含%字符的所有值。

+0

非常感謝。 – mohsensajjadi

相關問題