T-SQL 字符串前加 N 是什么意思

本文解释了 SQL 中字符串前缀 N 的含义及其使用场景。N 表示该字符串为 Unicode 类型,适用于包含多种语言字符的数据。文章还介绍了在不同情况下是否需要使用 N 前缀,并给出了实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://www.cnblogs.com/ice5/articles/1187199.html

 

比如 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 了。

 

对于一些非sqlsever系统语言的小语种,例如你装的中文版sql,然而存储的字段内容是韩文,这时候如果不是 nvarchar(Unicode 类型) 是复制不进去的,复制进去全是?,这时候你可以考虑到用nvarchar(Unicode 类型) 字段,sql中必须加上N,另外一种方法就是进行decode加密
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值