我正在尝试在 MSSQL 中执行下面提到的查询。
insert into STUDENT (STUDENT_NAME, STUDENT_MARKS, SID) values ('索引', 10, 2)
STUDENTNAME column is of type NVARCHAR.
执行上述查询后。插入的学生姓名是:??
据我了解,上述问题与编码有关,因此我修改了上述查询,添加了 N,如下所示:
insert into STUDENT (STUDENT_NAME, STUDENT_MARKS, SID) values (N'索引', 10, 2)
上面的查询按预期运行,并且成功插入中文字符。
问题:我正在使用 JDBC 执行此插入查询,那么我是否需要如上所示使用 N 处理所有值。或者驱动程序级别有其他一些设置可以解决此问题?
最佳答案
我在 Microsoft article 上找到了这个,
Prefix Unicode character string constants with the letter N. Without the N prefix, the string is converted to the default code page of the database. This default code page may not recognize certain characters.
N
表示字符串采用 Unicode(N 实际上代表国家语言字符集),这意味着您传递的是 NCHAR、NVARCHAR 或 NTEXT 值,而不是 CHAR、VARCHAR或文本。
请关注this link帖子:
Difference between varchar and nvarchar?
对于您的问题,如果您使用 INSERT
查询在表中插入记录,那么YES您必须添加 N
> 在每个字符串值之前。
关于java - MSSQL中的编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49626999/