使用特殊字符的SQL类

使用特殊字符的SQL类,sql,sql-server,select,Sql,Sql Server,Select,如何获得一个查询,该查询为我提供包含或不包含特殊字符的单词? 例如,我有这个数据:“NÃO”,如果我输入“NAO”进行搜索,你应该将这个信息返回给我。反之亦然,如果我有“安东尼奥”,我写“安东尼奥”,安东尼奥应该回到我身边。 我使用此代码,但它不起作用: SELECT * FROM PESSOA WHERE NOME like '%'+ @PROCURAR + '%' 可使用Latin1\u general\u CI\u AI进行区分重音和不区分重音的搜索 例如,ÃNTONIO和ANTONIO

如何获得一个查询,该查询为我提供包含或不包含特殊字符的单词? 例如,我有这个数据:“NÃO”,如果我输入“NAO”进行搜索,你应该将这个信息返回给我。反之亦然,如果我有“安东尼奥”,我写“安东尼奥”,安东尼奥应该回到我身边。 我使用此代码,但它不起作用:

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

可使用
Latin1\u general\u CI\u AI进行区分重音和不区分重音的搜索

例如,ÃNTONIOANTONIO如果不区分重音,则是相同的

在下面的查询中,
Latin1\u general\u CI\u AI
可以分解为以下几个部分

  • latin1
    使服务器使用字符集latin 1(基本上是ascii)处理字符串

  • CI指定不区分大小写,因此“ABC”等于“ABC”

  • AI指定不区分重音,因此'u'等于'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Ó
预期结果如下所示:

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Ó
有关详细信息,请访问Latin1_General_CI_AI

另见

“NÃO”和“NAO”是不同的字符请尝试一下,有点老套,但您可以将其与替换(NOME,'Ã','a')进行比较。