在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 排序规则的现有数据库。问题是每当我更新这个新数据库中的上述两个表时,我输入的所有内容都是' ???????'
我尝试过搜索解决方案并观察了以下内容:
据我所知,当我运行Alter表语句时,前两个已经处理好了。第三点似乎对MySQL有效,而不是SQL Server。
此外,如果我直接从相应的数据库导入表格以及数据,则会正确显示列值(中文和日文文本)。但是,当我截断并尝试加载数据时,我面临问题。我将无法以这种方式导入数据,因为最终目标是将所有表保留在单个数据库中并清除剩余的数据库。
希望我已经明确了问题陈述。
答案 0 :(得分:1)
您需要在包含UNICODE字符的字符串文字的开头使用N.
第一个示例中的代码应该是这样的。
CONCAT(N'以下的邮件是专为您的最终客户所准备。', Account_Name)