2017-09-22 54 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

我这样做,它的工作 –