2010-07-18 297 views
4

如果我尝试创建一个选择具有特殊(北欧)字符,如:SQL LIKE有特殊字符

Select * from users where name like '%æ%' 

它只是选择所有用户,而不是包含字母“æ”的。

我是否需要在数据库中安装一些特殊的驱动程序,或者是否有其他我错过的东西?

更新:
我使用的是SQL Server 2008数据库,排序规则设置为“SQL_Latin1_General_CP1_CI_AS”和数据字段是一个可空nvarchar的数据类型。

+2

你正在使用什么样的SQL? – kennytm 2010-07-18 08:44:32

+1

什么样的数据类型是名字?什么排序呢? – gbn 2010-07-18 08:50:28

+0

抱歉,现在应该更新所需的信息。 – Dofs 2010-07-18 09:10:47

回答

4

最有可能的一些整理或数据类型问题

为例,介绍了97和230

SELECT ASCII('æ' COLLATE Albanian_CI_AI), ASCII('æ' COLLATE Latin1_General_CI_AS) 

我们需要更多信息基本上。

编辑:Question about Danish/Norwegian å(虽然未解决)

编辑2:修改代码,这一点,如果名称类型为nvarchar所以文字变得过于unicode的。

Select * from users where name like N'%æ%' 
0

确保你使用的是扩展字符集(UTF-8),你应该没问题。

0

它应该是能正常工作..
但尝试这个Select * from users where name like '%[æ]%'

+0

它的工作原理,但我不能手动转义变量,因为它是一个搜索输入。 – Dofs 2010-07-18 09:01:34

+0

我使用NHibernate,它使用搜索输入的参数,所以它应该对sql注入。 – Dofs 2010-07-18 09:11:50