我正在使用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字符的唯一方法还是我应该更改其他内容?
谢谢!
答案 0 :(得分:2)
您问题的答案是“是的,您应该使用N
来自 Docs
为字符串常量加上字母N前缀时,如果要转换的常量不超过nvarchar字符串数据类型的最大长度(4,000),则隐式转换将导致UCS-2或UTF-16字符串。否则,隐式转换将导致大值nvarchar(max)。
因此,如果您不使用N
,则SQL Server会将其视为VARCHAR
(非Unicode)。
使用N
会将字符串转换为unicode字符串。