SSMS 2014 - 用于unicode /多语言的DB Collat​​ion

时间:2018-01-22 18:31:40

标签: sql sql-server sql-server-2008 ssms ssms-2014

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

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)

到目前为止一直运作良好。 我在第二个数据库中有一个类似的表,其中排序规则设置为 Japanese_CI_AS_KS_WS ,因此此表中的注释是日语。示例更新声明如下:

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

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

现在,我的任务是将这些表传输到默认设置为 SQL_Latin1_General_CP1_CI_AS 排序规则的现有数据库。问题是每当我更新这个新数据库中的上述两个表时,我输入的所有内容都是' ???????'

我尝试过搜索解决方案并观察了以下内容:

  1. 许多建议包括将数据类型转换为unicode。
  2. 我工作场所的一些人建议改变专栏的整理。
  3. 使用UTF-8作为默认字符集
  4. 据我所知,当我运行Alter表语句时,前两个已经处理好了。第三点似乎对MySQL有效,而不是SQL Server。

    此外,如果我直接从相应的数据库导入表格以及数据,则会正确显示列值(中文和日文文本)。但是,当我截断并尝试加载数据时,我面临问题。我将无法以这种方式导入数据,因为最终目标是将所有表保留在单个数据库中并清除剩余的数据库。

    希望我已经明确了问题陈述。

1 个答案:

答案 0 :(得分:1)

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

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

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