我在这个查询中发现了一些奇怪的东西
SELECT *
FROM t1
WHERE t1.country = N'USA';
为什么使用N Letter?
答案 0 :(得分:3)
N代表“国家字符”,表示字符串的内容为Unicode。
每当您遇到可能包含默认ASCII字符集之外的字符的专有名称或其他实体时,您应该使用Unicode(nchar/nvarchar
)。如果您没有使用N
前缀包围此类字符串,则会丢失数据。例如:
SELECT N'ук ферт хер', 'ук ферт хер';
结果:
----------- -----------
ук ферт хер ?? ???? ???
您还应确保在WHERE或其他子句中对n(var)char列使用N前缀。当您不使用N前缀时,由于隐式转换,您可能会遇到严重的性能问题。
答案 1 :(得分:1)
N代表角色的兼容性。用于表示unicode字符。
答案 2 :(得分:1)
它将字符串声明为nvarchar数据类型,而不是varchar,区别在于varchar列只存储8位代码页,而nvarchar列可以存储任何Unicode数据