在WHERE Cluase中使用字母N.

时间:2017-10-10 07:50:37

标签: sql tsql

我在这个查询中发现了一些奇怪的东西

SELECT *
FROM t1
WHERE t1.country = N'USA';

为什么使用N Letter?

3 个答案:

答案 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数据