我期待比較SQL 2個VARCHAR處理,一個會像Cafe
和其他Café
有沒有在SQL的方式,將允許要比較的兩個值。例如:怎樣(隨着電子商務E,E,E和E)執行不區分重音比較SQL服務器?
SELECT *
FROM Venue
WHERE Name Like '%cafe%'
所以,如果有與它會被包含在結果集的名稱Big Bobs Café Extraordinaire
場地?
我期待比較SQL 2個VARCHAR處理,一個會像Cafe
和其他Café
有沒有在SQL的方式,將允許要比較的兩個值。例如:怎樣(隨着電子商務E,E,E和E)執行不區分重音比較SQL服務器?
SELECT *
FROM Venue
WHERE Name Like '%cafe%'
所以,如果有與它會被包含在結果集的名稱Big Bobs Café Extraordinaire
場地?
強制到口音不敏感collation
您還需要確保兩側具有相同的排序規則,以避免錯誤或進一步的強制,如果你想進行比較的表變量或臨時表VARCHAR列
而且由於恆定值將有更新數據庫的歸類:只有局部變量,而不是常量
沒了,甚至沒有那麼
SELECT *
FROM Venue
WHERE
Name COLLATE Latin1_general_CI_AI Like '%cafe%' COLLATE Latin1_general_CI_AI
通過特定的口音不敏感collation您選擇:
SELECT *
FROM Venue
WHERE Name COLLATE Latin1_General_CI_AI Like '%cafe%' COLLATE Latin1_General_CI_AI
的CI代表「不區分大小寫」和AI爲「不區分重音」。
啊,這就是在結束所有這些愚蠢的字符的意思。我知道這是愚蠢的,但可以幫助一個巨大的數額。不知何故,對我而言,DB整理似乎總是給它帶來大腦迷霧。 – ilivewithian 2010-03-17 11:10:39
如果 'A' COLLATE SQL_Latin1_General_CP1_CS_AS = 'A' COLLATE SQL_Latin1_General_CP1_CS_AS SELECT N'Yes' ELSE SELECT N'No」
區分重音和重音鈍感搜索可以不要使用Latin1_general_CI_AI
這裏AI
是對於不區分重音和AS
用於區分重音 即咖啡廳和咖啡是,如果不區分重音相同。
在下面的查詢Latin1_general_CI_AI
可以分解成以下的部件。
latin1
使服務器治療字符串中使用的字符集拉丁語1,基本ASCII。
CI指定不區分大小寫,所以「ABC」等於「abc」。
你查詢應該如下:
SELECT * FROM Venue WHERE Name COLLATE Latin1_general_CI_AI Like '%cafe%' COLLATE Latin1_general_CI_AI
預期結果如下:
Id name
1 Café
2 Cafe
在這種情況下,您不需要提供排序規則兩次:SELECT * FROM Venue WHERE Name Like'%cafe%'COLLATE Latin1_general_CI_AI – PollusB 2014-11-21 15:18:14
@PollusB:true,my bad – gbn 2014-11-26 15:16:13
我實現了此答案,搜索不區分變音,但副作用是我在選擇查詢中缺少一些口音。例如c與急性(U + 0107)。在列屬性中,我看到SQL_Latin1_General_CP1_CI_AI排序規則。我使用以下語句更改了排序規則:ALTER TABLE mytable ALTER COLUMN description varchar(48)COLLATE SQL_Latin1_General_CP1_CI_AI。它以前是Czech_CI_AS排序規則。如果我在答案中使用查詢而不更改列的排序規則,則它在實體框架中不起作用。 – qub1n 2016-11-07 07:39:40