【问题标题】:2 different collations conflict when merging tables with Sql Server?将表与 Sql Server 合并时 2 个不同的排序规则冲突?
【发布时间】:2012-12-12 20:03:33
【问题描述】:

我有 DB1,它有一个 Hebrew 排序规则

我也有 DB2,它有 latin 通用排序规则。

我被要求在DB1.dbo.tbl1DB2.dbo.tbl2 之间合并一个表(写一个查询)

可以写在wuqery中

insert into ...SELECT Col1 COLLATE Latin1_General_CI_AS...

但我厌倦了这样做。

我想将两个 dbs/tables 都设为 same 排序规则,这样我就不必每次都写COLLATE...

问题是——

我应该转换latin->hebrew Hebrew->latin 吗?

我们需要存储一切。 (而且我们所有的文本栏都是nvarachr(x)

如果是这样,我该怎么做。

【问题讨论】:

    标签: sql-server sql-server-2008 collation nvarchar


    【解决方案1】:

    如果您在结果数据库中使用 Unicode 数据类型 - nvarchar(x),那么您将在 INSERT 中省略 COLLATE。 SQL Server 会自动将源排序规则中的数据转换为 Unicode。因此,如果要插入到 nvarchar 列,则不应转换任何内容。

    【讨论】:

    • 谢谢。仍然如果我想要 1 个排序规则,我应该转换 latin->hebrew 还是希伯来语->latin ?
    • 很可能您应该使用希伯来语 collat​​on,因为拉丁符号是希伯来语代码页的子集。但同样,使用 Unicode 数据类型既不需要“转换”,也不需要在代码中写入 COLLATE
    • 拉丁符号是希伯来语代码页的子集——你从哪里得到的信息?希伯来语代码页应该包含拉丁符号吗?
    • 说实话,我对希伯来语的支持了解不多。我的结论是快速调查我发现的希伯来语代码页的结果 - Windows-1255ISO/IEC 8859-8
    猜你喜欢
    • 2010-10-07
    • 2012-01-21
    • 2018-03-20
    • 2013-12-09
    • 2019-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多