SQL语句前面加 N 是什么意思?
作者:C/S框架网  发布日期:2011/05/14 12:22:25
SQL语句前面加 N 是什么意思?

比如:

SQL:

SELECT @STATUS = N'STOPPED'



那么其中的字符串 stopped 前面为什么要加 N 呢?而且我们发现有些地方加 N 与否都没有影响,有些地方又必须加 N。
N 在这里表示 Unicode,就是双字节字符。对于西文字符,用一个字节来存储过足够了,对于东方文字字符,就需要两个字节来存储。Unicode 为了统一、规范、方便、兼容,就规定西文字符也用两个字节来存储。
也就是说加 N 就表示字符串用 Unicode 方式存储。
但有时候加与不加都一样,又是什么原因呢?这是由于自动转换造成的。

比如:

SQL:

DECLARE @STATUS NVARCHAR(20)

SELECT @STATUS = N'STOPPED'

SELECT @STATUS = 'STOPPED'



实际上上述两句赋值的结果是一样的,因为变量类型就是 nvarchar(Unicode 类型)。

而有些地方(比如:sp_executesql 的参数)不能自动转换,所以需要加 N 了。



原文:http://blog.csdn.net/henryhappier/archive/2009/11/17/4819694.aspx

上一篇 下一篇