2017-09-22 53 views
2

如何獲取包含或不包含特殊字符的查詢? 例如,我有這樣的數據:「NÃO」,如果我通過鍵入「NAO」進行搜索,則應該將此信息返回給我。反之亦然,如果我有:「ANTONIO」,我寫「ANTÓNIO」,ANTÓNIO應該回到我身邊。 我用這個代碼,但它不工作:使用特殊字符的SQL LIKE

SELECT * FROM PESSOA WHERE NOME like '%'+ @PROCURAR + '%' 
+2

「NAO」 和 「NAO」 是不同的字符 – user1844933

+4

試試這個,https://stackoverflow.com/questions/2461522/how-do-i-perform-一個重音不敏感的比較-e-é-ê-ê-and-ë-in-sql-ser –

+0

有點破解,但是你可以比較一下'REPLACE(NOME,'Ã','A ')' –

回答

2

區分重音和重音不敏感搜索可能會不要使用Latin1_general_CI_AI

安東尼ANTONIO是,如果不區分重音相同。

在下面的查詢Latin1_general_CI_AI可以分解成以下幾部分。

  • latin1使服務器使用字符集latin 1,基本上ascii。

  • CI指定不區分大小寫,所以「ABC」等於「abc」。

  • AI指定不區分重音,所以'ü'等於'u'。

查詢應該如下:

SELECT * FROM table_name WHERE field_name COLLATE Latin1_general_CI_AI Like '%ANTONIO%' COLLATE Latin1_general_CI_AI 

預期結果如下:

Id name 
1 ÃNTONIO 
2 ANTÓNIO 
3 ANTONIO 
4 ANTÓNIÓ 
+0

我這樣做,它的工作 –