SQL LIKE使用特殊字符

时间:2017-09-22 01:30:49

标签: sql sql-server select

如何获得一个带有包含或不包含特殊字符的单词的查询? 例如,我有这样的数据:“NÃO”,如果我通过输入“NAO”进行搜索,您应该将此信息返回给我。反过来,如果我有:“ANTONIO”并且我写“ANTÓNIO”,ANTÓNIO应该回到我身边。 我使用此代码但它不起作用:

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

2 个答案:

答案 0 :(得分:2)

重音敏感和重音不敏感搜索可以使用Latin1_general_CI_AI

例如,如果Accent Insensitive,ñNTONIO ANTONIO 是相同的。

在下面的查询Latin1_general_CI_AI中可以分解为以下部分。

  • latin1使服务器使用charset 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Ó

答案 1 :(得分:1)

SELECT * 
FROM PESSOA 
WHERE NOME COLLATE Latin1_General_CI_AI Like '%'+ @PROCURAR + '%' 
COLLATE Latin1_General_CI_AI

请访问Latin1_General_CI_AI

in sql server, what is: Latin1_General_CI_AI versus Latin1_General_CI_AS

另见 https://www.mssqltips.com/sqlservertip/4395/understanding-the-collate-databasedefault-clause-in-sql-server/