SSMS 2014 - Unicode/多种语言的数据库整理

SSMS 2014 - DB Collation for unicode/ multiple languages

在 SSMS 2014 中,我有一个排序规则设置为 Chinese_Simplified_Stroke_Order_100_CI_AI 的数据库,我在其中为大约 50 个常规进程创建了一个 table其中的列。 它基本上包含一些产品的销售数据。这些列中很少有整数作为值,其他列包含英文文本。 然而,其中两列包含中文文本形式的值。我用来更新该列的示例脚本如下:

ALTER TABLE table_xyz ALTER COLUMN comments NVarchar (max) COLLATE Chinese_Simplified_Stroke_Order_100_CI_AI

UPDATE table_xyz SET comments = CONCAT('以下的邮件是专为您的最终客户所准备。', Account_Name)

到现在为止一切正常。 我在第二个数据库中有一个类似的 table,排序规则设置为 Japanese_CI_AS_KS_WS,因此 table 中的注释是日文的。示例更新语句如下:

ALTER TABLE table_abc ALTER COLUMN comments NVarchar (max) COLLATE Japanese_CI_AS_KS_WS

UPDATE table_xyz SET comments = CONCAT('次の電子メールは顧客のためのテンプレートです', Account_Name)

现在,我的任务是将这些 table 转移到一个现有数据库,该数据库将 SQL_Latin1_General_CP1_CI_AS 归类设置为默认值。问题是每当我在这个新数据库中更新上述两个 tables 时,我在输出中得到的只是 '????????'

我尝试寻找解决方案并观察到以下内容:

  1. 许多建议包括将数据类型转换为 unicode。
  2. 我工作场所的几个人建议更改列的排序规则。
  3. 使用 UTF-8 作为默认字符集

据我所知,当我 运行 Alter table 语句时,前两个已经得到处理。第三点似乎对 MySQL 而不是 SQL 服务器有效。

此外,如果我直接从相应的数据库中导入 table 以及数据,列值会正确显示(中文和日文文本)。但是,当我 t运行cate 并尝试加载数据时,我遇到了问题。我将无法以这种方式导入数据,因为最后 objective 是将所有 table 保存在一个数据库中并清除剩余的数据库。

希望我已经把问题陈述清楚了。

您需要在包含 UNICODE 字符的字符串文字的开头使用 N。

你的第一个例子中的代码应该是这样的。

CONCAT(N'以下的邮件是专为您的最终客户所准备。', Account_Name)