日期:2014-05-18  浏览次数:20638 次

问一个简单的问题
我看到有的字符串赋值前有个N
比如
set @str=N'sdjfkjsdjf'
那个N有什么用处????

------解决方案--------------------
转型吧
------解决方案--------------------
SQL code
set @str=N'sdjfkjsdjf'
--N表示字符串是 UNICODE 编码。

------解决方案--------------------
加上 N 代表存入数据库时以 Unicode 格式存储。 
N'string' 表示string是个Unicode字符串 

Unicode 字符串的格式与普通字符串相似,但它前面有一个 N 标识符(N 代表 SQL-92 标准中的国际语言 (National Language))。N 前缀必须是大写字母。例如,'Michél' 是字符串常量而 N'Michél' 则是 Unicode 常量。Unicode 常量被解释为 Unicode 数据,并且不使用代码页进行计算。Unicode 常量确实有排序规则,主要用于控制比较和区分大小写。为 Unicode 常量指派当前数据库的默认排序规则,除非使用 COLLATE 子句为其指定了排序规则。Unicode 数据中的每个字符都使用两个字节进行存储,而字符数据中的每个字符则都使用一个字节进行存储。有关更多信息,请参见使用 Unicode 数据。 

Unicode 字符串常量支持增强的排序规则。
------解决方案--------------------
http://www.microsoft.com/china/msdn/library/data/sqlserver/IntlFtrQL2005.mspx?mfr=true
------解决方案--------------------
Unicode常量使用 N开头来指定;
 使用N'的情况主要是在双字节系统环境中强制系统对每个字符用Unicode标准来解释,
 否则如果你的数据库.mdf文件是中文名而又不加N'的话,数据库加载后名称可能就变成乱码!