T-SQL 字符串前加 N 是什么意思
2010-11-20 20:38
232 查看
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加密
比如 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加密
相关文章推荐
- t-sql中字符串前加N代表什么意思
- T-SQL字符串前加N是什么意思
- [MSSQL]T-SQL 字符串前加 N 是什么意思
- 【SQL SERVER】T-SQL 字符串前加 N 是什么意思
- T-SQL 字符串前加 N 是什么意思
- T-SQL 字符串前加 N 是什么意思
- T-SQL 字符串前加 N 是什么意思
- T-SQL 字符串前加 N 是什么意思
- T-SQL 字符串前加 N 是什么意思
- over在SQL里就什么意思
- 字符串前加个L是什么意思?
- sql里 a.user_id=b.o_iccard(+) 这个 "(+) " 什么意思?
- select 1 from ..., sql语句中的1代表什么意思
- SQL*LODER 中fields terminated by 什么意思
- sql加一个%号是什么意思
- sql生成脚本里SET ANSI_NULLS ON什么意思
- select 1 from ..., sql语句中的1代表什么意思
- T-SQL 中的 GO 是什么意思
- SQL 语句中 where 条件后 写上1=1 是什么意思
- SQL存储过程前面有语句set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ,这是什么意思,数据库存储过程前