数据库 中 N'expression'中的N是什么意思啊??蛋疼
发布网友
发布时间:2024-09-17 09:31
我来回答
共3个回答
热心网友
时间:2024-10-02 01:36
T-SQL字符串前加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 类型)。
而有些地方(比如:sp_executesql 的参数)不能自动转换,所以需要加 N 了。
热心网友
时间:2024-10-02 01:36
N是Nvarchar()的意思吧,nvarchar是unicode的变长型,前面N表示把字符串变成Unicode型吧,通常系统存储过程参数里面喜欢这样用,如果没有字符集的问题直接用 字符串也是可以的
热心网友
时间:2024-10-02 01:30
把问题说清楚好么
热心网友
时间:2024-10-02 01:30
T-SQL字符串前加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 类型)。
而有些地方(比如:sp_executesql 的参数)不能自动转换,所以需要加 N 了。
热心网友
时间:2024-10-02 01:31
把问题说清楚好么
热心网友
时间:2024-10-02 01:33
N是Nvarchar()的意思吧,nvarchar是unicode的变长型,前面N表示把字符串变成Unicode型吧,通常系统存储过程参数里面喜欢这样用,如果没有字符集的问题直接用 字符串也是可以的