T-SQL 字符串前加 N 是什么意思
2013-04-13 17:24
316 查看
转http://www.cftea.com/c/2006/10/CB1DNWYWIB0XWXB3.asp
比如 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 了。
declare @empname as nvarchar(50);
set @empname =(select firstname + N' aaa'+lastname from Emp where id=2);
select @empname as empname;
这个里面的 N' aaa' 就是字符串连接的时候添加一个aaa插入到firstname
和 lastname 之间
比如 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 了。
declare @empname as nvarchar(50);
set @empname =(select firstname + N' aaa'+lastname from Emp where id=2);
select @empname as empname;
这个里面的 N' aaa' 就是字符串连接的时候添加一个aaa插入到firstname
和 lastname 之间
相关文章推荐
- T-SQL 字符串前加 N 是什么意思
- T-SQL 字符串前加 N 是什么意思
- T-SQL 字符串前加 N 是什么意思
- t-sql中字符串前加N代表什么意思
- T-SQL 字符串前加 N 是什么意思
- T-SQL字符串前加N是什么意思
- T-SQL 字符串前加 N 是什么意思
- 【SQL SERVER】T-SQL 字符串前加 N 是什么意思
- [MSSQL]T-SQL 字符串前加 N 是什么意思
- sql 语句: COLLATE Chinese_PRC_CI_AS什么意思?
- T-SQL中的go是什么意思?
- ASP rs.open sql,conn,1,1 与 rs.open sql,conn,1,3 是什么意思?有何区别呢?
- sqlplus /nolog 是什么意思
- SQl中“(+)”表示什么意思
- connection.prepareStatement(sql).execute()返回值boolen类型什么意思?
- (转)SQL语句中的N'xxxx'是什么意思
- sql中,regexp_replace、lengthb分别是什么意思?
- <?php $sql = <<<EOF 。。。。EOF;?>这种写法是什么意思
- Java - MyBatis中的动态SQL是什么意思?
- select 1 from ... sql语句中的1代表什么意思?