2016-12-14 81 views
1

爲什麼SQL Server認爲CHAR(49)和CHAR(185)是相同的?爲什麼SQL Server認爲CHAR(49)和CHAR(185)是相同的?

當1被輸入到任何一種類型的NVARCHAR或TEXT的列時,它把它看作是既CHAR(49)(一)和CHAR(185)(上標上)

實施例的數據:

SELECT CAST('1111' AS TEXT) AS col1 INTO CharTest; 

選擇腳本:

SELECT * FROM CharTest WHERE col1 LIKE '%'+CHAR(49)+'%'; 
SELECT * FROM CharTest WHERE col1 LIKE '%'+CHAR(185)+'%'; 

兩個語句返回:1111

+0

我測試了腳本。它完美的工作,唯一的一個腳本檢索1111,而另一個沒有。 –

+1

它是你有效的排序規則嗎? – Cato

+1

您的示例數據與問題描述不匹配! ,選擇1111它意味着dataType是'int',所以通過正確的例子'NVARCHAR'或'TEXT'來更新你的問題。 –

回答

6

廣告如果不同的排序規則應該這樣做

SELECT * FROM CharTest WHERE 
     col1 LIKE '%'+CHAR(49)+'%' COLLATE SQL_Latin1_General_CP1_CS_AS; 
SELECT * FROM CharTest WHERE 
     col1 LIKE '%'+CHAR(185)+'%' COLLATE SQL_Latin1_General_CP1_CS_AS; 
+0

投票,很好的捕獲。 –

相關問題