2012-10-04 83 views
-4

我比較SQL Server 2008中同一個表和同一列中的文本值,但結果有時不正確。可能相關的列信息:SQL文本LIKE不總是工作

Data type: text 
Full Text: True 
Collation: SQL_Latin1_General_CP1_CI_AS 

出100場實際的比賽我只得到62.我比較不是由像一些比較工具拿起字段值,他們是100%相同,沒有額外的空間,線休息等

任何想法爲什麼文字LIKE不總是工作?

SQL:

SELECT a.text as one, b.text as two 
    FROM [Db].[dbo].[Table] a join 
    [Db].[dbo].[Table] b on 
    a.text LIKE b.text 
+4

我們需要示例,至少是您認爲應該匹配但不匹配的內容以及您正在使用的模式。 –

+3

向我們展示您正在使用的查詢(及其操作的數據)!我們無法閱讀你的思想和你的屏幕...... –

+4

*任何想法爲什麼文字LIKE不總是工作?*我寫的代碼並不總是沒有bug。編譯器壞了。 –

回答

4

下面的兩個例子顯示LIKE完全按預期工作。我懷疑你說「LIKE並不總是有效」的原因是因爲你不知道LIKE是如何工作的。

這裏就是應該發生一個匹配的例子:

CREATE TABLE #tmpTable 
(
    [Text] TEXT 
); 

INSERT INTO #tmpTable VALUES ('Hello'); 

SELECT * 
    FROM #tmpTable tmpTable1 
     INNER JOIN #tmpTable tmpTable2 
     ON tmpTable1.[Text] LIKE tmpTable2.[Text]; 

DROP TABLE #tmpTable; 

Hello就像Hello,」 你說。

這裏的比賽應該在哪裏發生不匹配:

CREATE TABLE #tmpTable 
(
    [Text] TEXT 
); 

INSERT INTO #tmpTable VALUES ('[h]'); 

SELECT * 
    FROM #tmpTable tmpTable1 
     INNER JOIN #tmpTable tmpTable2 
     ON tmpTable1.[Text] LIKE tmpTable2.[Text]; 

DROP TABLE #tmpTable; 

「但是,[h][h],」 你說。

LIKE不是等號運算符,它具有用於搜索單個字符,字符範圍和可變數字字符的特殊語法。如果您碰巧在使用該特殊語法(有意或無意)的列中輸入文本,則會將特殊語法視爲字符匹配指令,而不是字面文本。