【发布时间】:2019-02-04 03:25:58
【问题描述】:
我在slq-server数据库中正确存储了西里尔字母的地址(使用nvarchar)。
选择西里尔地址所在行时,select语句正确返回该行。
但是当尝试选择具有特定地址的所有行时(例如在 where 子句中),选择什么也没找到,因为它采用西里尔搜索词,根据拉丁排序规则将其转换为 ?????' 并搜索对于数据库中的?????',它当然找不到。
可以修复吗?通过服务器或数据库设置,不需要前缀"N",也不会丢失所有的德语、法语、...口音?
和/或是否有西欧和西里尔符号的“整体排序规则”,或一般 UNICODE 的 16 位排序规则?
【问题讨论】:
-
您在哪里执行您的 T-SQL 语句 - 在 SQL Server Management Studio 中,使用一些脚本,...?谢谢。
-
这通常是一个 client 设置。例如,当我从 PHP 连接时,我必须将
CharacterSet连接选项设置为UTF-8。 -
语句是如何以及在哪里创建的,以及它是如何以及在哪里执行的?你是从某种应用程序中调用它吗?像
WHERE SomeColumn='SomeCyrillic'这样的东西不能工作。这将被解释为 扩展 ASCII 字符串,而WHERE SomeColumn=N'SomeCyrillic'将使用该字符串作为UCS-2(几乎与utf-16相同),从而保留所有特殊字符。 -
顺便说一句:在大多数情况下,建议使用类型化参数而不是文字...(阅读小鲍比表)
-
您能否编辑您的问题,以包含您现有数据库的排序规则以及每个链接中的列?它可能会帮助我们回答您的问题:View Collation Information
标签: sql sql-server database tsql collation