【发布时间】:2021-09-10 18:07:48
【问题描述】:
我已经创建了 2 个演示数据库。
服务器排序规则 - 希伯来语_CI_AS
DB1 排序规则 - 希伯来语_CI_AS
DB2 排序规则 - Latin1_General_CS_AS。
在 DB2 中,我有一列带有希伯来语_CI_AS 排序规则。我正在尝试将希伯来语文本插入该列。数据类型为nvarchar(250)。
这是示例脚本:
INSERT INTO [Table] (HebCol)
VALUES('1בדיקה')
当我在 DB1 上运行它时,一切正常。
在 DB2 上,虽然该列有希伯来语排序规则,但我得到的是问号而不是希伯来语文本。
如果排序规则相同,为什么结果会不同?
P.S:我不能在正文前添加N。在现实世界中,应用正在执行插入操作。
【问题讨论】:
-
“PS:我不能在文本前添加 N。在现实世界中,应用程序正在执行插入操作。” 然后习惯于在您的数据中使用
?。 ..或更改数据库的排序规则。文字字符串将在您当前连接到的数据库的排序规则中解释,而不是目标列的。 -
感谢您的回复。那么列排序有什么影响呢?
-
如果不明确更改其中一个排序规则@Itai,则无法比较不同排序规则的字符串。这意味着您将能够比较 2 个数据库中的值,而无需显式更改其中一个的排序规则,因此查询将是 SARGable。虽然我个人发现通常人们会设计带有 2 列的数据库;一个在数据库的排序规则中,然后在另一个作为(持久)计算列中。然后在与使用不同排序规则的数据库进行比较时使用后者,而前者在同一个数据库中。
标签: sql-server collation