我的页面添加了utf-8元元素+ sql server编码也是utf。但是当我创建记录并尝试发出带有包含'ń'等POLISH字符的条件的SELECT语句时,我看不到任何结果。有什么想法我错过了什么?
另外Sql管理工作室用POLISH字符显示结果,但我不相信它....我想将记录放入数据库有问题...
或者我该如何排除故障?
谢谢,帕维尔
答案 0 :(得分:3)
我有同样的问题,我通过在WHERE
子句中加上“N”前缀来解决它。
例如,我有一个表'人',其中包含超过21,000个人的名字。最近将姓氏为“Krzemiński”的人添加到数据库中,当显示该行时,该名称显示正常(即,正确显示“ń”字符)。但是,以下两个语句均未返回任何记录:
SELECT * FROM Person WHERE FamilyName='Krzemiński
SELECT * FROM Person WHERE FamilyName LIKE 'Krzemiń%'
...但这些陈述都返回了正确的记录:
SELECT * FROM Person WHERE FamilyName LIKE 'Krzemi%'<br>
SELECT * FROM Person WHERE FamilyName LIKE 'Krzemi%ski'
当我执行以下声明时:
SELECT * FROM Person WHERE FamilyName LIKE '%ń%'
我得到所有包含字母“n”(无变音符号)的8900条记录,但我不获取包含“ń”字符的记录。我用所有波兰字符(ąćęłńóśźż)尝试了最后一个查询,除了“ó”之外的所有字符都表现出相同的行为(即返回所有具有低ASCII等效字符的记录)。奇怪的是,“ó”可以正常工作,只返回那些在FamilyName字段中带有“ó”的记录。
在任何情况下,解决方案都是在搜索条件前加上“N”,以明确地将其声明为Unicode。
因此,以下陈述:
SELECT * FROM Person WHERE FamilyName LIKE N'%ń%'
SELECT * FROM Person WHERE FamilyName=N'Krzemiński'
...都返回正确的记录集。
我感到困惑的原因是我有很多带有奇怪变音符号的记录,即使没有“N”前缀,它们也会返回正确的记录。到目前为止,我发现需要明确的“N”前缀的唯一字符是波兰字符。
答案 1 :(得分:1)
根据此(已存档)Microsoft支持问题:
答案 2 :(得分:0)
只需使用nvarchar而不是varchar作为保存记录的列的数据类型。