读书人

SQLSERVER中存储过程有些不明白解决办

发布时间: 2012-03-05 11:54:02 作者: rapoo

SQLSERVER中存储过程有些不明白

EXEC sp_attach_db @dbname = N 'pubs ',
@filename1 = N 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf ',
@filename2 = N 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf '

请问sqlserver存储过程中的前面的 N ' 代表什么意思,
不胜感激

[解决办法]
比如 select @status = N 'stopped '

那么其中的字符串 stopped 前面为什么要加 N 呢?而且我们发现有些地方加 N 与否都没有影响,有些地方又必须加 N。

N 在这里表示 Unicode,就是双字节字符。对于西文字符,用一个字节来存储过足够了,对于东方文字字符,就需要两个字节来存储。Unicode 为了统一、规范、方便、兼容,就规定西文字符也用两个字节来存储。

也就是说加 N 就表示字符串用 Unicode 方式存储。

但有时候加与不加都一样,又是什么原因呢?这是由于自动转换造成的。

比如:
declare @status nvarchar(20)
select @status = N 'stopped '
select @status = 'stopped '

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

读书人网 >SQL Server

热点推荐