MS SQL插入问号而不是非拉丁符号

时间:2018-10-31 09:42:43

标签: sql-server sql-insert non-ascii-characters sql-server-2017

我正在使用Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64) Aug 22 2017 17:04:49 Copyright (C) 2017 Microsoft Corporation Developer Edition (64-bit) on Windows Server 2012 R2 Standard Evaluation 6.3 <X64> (Build 9600: ) (Hypervisor)

当我这样做时:INSERT INTO MYTABLE(COLNAME) VALUES ('Қазақстан')会插入问号?????????而不是实际的字符串。我的列类型是NVARCHAR(255)。如果我在N这样的值之前插入...(N'Қазақстан')字符,它将被正确保存。是插入非ASCII字符的唯一方法还是我应该更改其他内容?

谢谢!

1 个答案:

答案 0 :(得分:2)

您问题的答案是“是的,您应该使用N

来自 Docs

  

为字符串常量加上字母N前缀时,如果要转换的常量不超过nvarchar字符串数据类型的最大长度(4,000),则隐式转换将导致UCS-2或UTF-16字符串。否则,隐式转换将导致大值nvarchar(max)。

因此,如果您不使用N,则SQL Server会将其视为VARCHAR(非Unicode)。 使用N会将字符串转换为unicode字符串。

相关问题