比如 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 了。
分享到:
相关推荐
Unicode字符串常量前加N,以支持多种语言的字符编码。为了防止混淆,建议始终使用单引号来包围字符串常量。 总的来说,T-SQL编程与应用是数据库开发的关键技能,它涉及了从基本的SQL操作到复杂的程序逻辑设计,对于...
- **Unicode字符串常量**:带有`N`前缀,如`N'China '`。 - **整型常量**:可以是二进制、十六进制或十进制表示。 - **实型常量**:用于表示小数。 - **日期时间常量**:用于存储日期和时间信息。 - **货币常量...
5.3.2 字符串查找 5.4 一个实际的应用程序 5.4.1 识别测量数据的趋势 5.4.2 LISLP算法的复杂度 5.4.3 用T-SQL解决最长上升子序列的长度问题 5.5 总结 第6章 子查询、表表达式和排名函数 6.1 子查询 6.1.1 ...
### T-SQL流程控制和函数知识点详解 #### 一、变量的定义、赋值与使用 在T-SQL中,变量是一种存储数据的容器。它允许用户在执行SQL语句时临时存储数据值。 - **定义变量**:使用`DECLARE`语句来定义一个变量。例如...
1. 字符串常量:分为ASCII和Unicode,ASCII常量用单引号包围,Unicode常量前加N标识。 2. 整型常量:有二进制、十六进制和十进制三种形式。 3. 实型常量:包括定点和浮点表示。 4. 日期时间常量:如'YYYY-MM-DD'或'...
5.3.2 字符串查找225 5.4 一个实际的应用程序226 5.4.1 识别测量数据的趋势226 5.4.2 LISLP算法的复杂度226 5.4.3 用T-SQL解决最长上升子序列的长度问题227 5.5 总结229 第6章 子查询、表表达式和排名函数231 ...
《Microsoft SQL Server 2008技术内幕:T-SQL查询》全面深入地介绍了Microsoft SQL Server 2008中高级T-SQL查询、性能优化等方面的内容,以及SQL Server 2008新增加的一些特性。主要内容包括SQL的基础理论、查询优化...
今天,我们将讨论如何在 T-SQL 中获取逗号分割的字符串数据中的元素。 方法一:利用循环逐个取出字符串的元素 在之前的文章中,我们已经介绍了如何获得字符串中元素的个数,以及如何获取指定索引的元素的两个函数...
- **字符型常量**:ASCII字符串用单引号包围,Unicode字符串用N'前缀。 - **数值型常量**:整型常量(二进制、十六进制、十进制)和实数型常量(定点数、浮点数)。 - **日期时间型常量**:特定格式的字符值,用单...
- SPACE(n):返回包含n个空格的字符串。 - REPLICATE(str, n):将字符串str重复n次。 - LEFT(str, n):返回字符串str从左侧开始的n个字符。 - RIGHT(str, n):返回字符串str从右侧开始的n个字符。 - DATALENGTH...
### SQL Server 数据库管理常用的SQL和T-SQL语句 #### 一、查询数据库版本信息 **命令:** ```sql SELECT @@VERSION; ``` **解释:** 此命令用于查看当前运行的 SQL Server 的版本信息,包括服务包、补丁级别等。 ...
"T-SQL语言完整" T-SQL语言是SQL Server数据库管理系统中使用的编程语言,用于编写数据库应用程序和存储过程。下面是T-SQL语言的主要知识点: 批处理 批处理是T-SQL语言中的一种机制,用于将多条SQL语句分隔成一...
3. **数据库加密**:SQL Server提供了`ENCRYPTBYKEY`和`PWDENCRYPT`函数来加密数据,`PWDCOMPARE`用于比较两个加密后的字符串是否一致。 4. **动态SQL获取表字段**:利用`DECLARE`声明变量,通过`sysobjects`和`...
- **字符串常量**:ASCII字符串常量使用单引号包围,Unicode字符串常量前缀为大写的`N`。 - **整型常量**:包括二进制、十六进制和十进制,如`0xEBF`(十六进制)和`18942`(十进制)。 - **实型常量**:定点和...
- **字符串匹配**:`LIKE`用于判断某个值是否符合模式。 - **NULL检查**:`IS NULL`用于判断值是否为空。 - **集合操作**:`IN`用于判断值是否存在于集合中。 6. **数据表操作**: - **创建数据表**:使用`...
- **TOP关键字**:`TOP n`表示返回前n条记录,其中n是需要的记录数。 - **列重命名**:`SELECT column_name AS alias_name`可以给列起别名,便于阅读和理解。 - **表重命名**:使用`FROM table_name AS alias_table_...
- NVARCHAR(n):Unicode可变长度字符串,n最大为4000,每个字符占用2字节。 3. 临时数据类型: - DATETIME:存储日期和时间,4字节日期+4字节时间,范围1900年1月1日到9999年12月31日,时间精确到3.33毫秒。 - ...
- **大小写敏感**:虽然 T-SQL 在关键字方面通常不区分大小写,但在某些场景中区分大小写是必要的,例如字符串比较。 - **Unicode 数据类型**:推荐使用 Unicode 数据类型(如 nvarchar、ntext),以确保字符集的...
- 使用`SELECT TOP m-n+1 * FROM 表名 WHERE (id NOT IN (SELECT TOP n-1 id FROM 表名))`来实现。 5. **随机排序分页查询:** - 使用`ORDER BY NEWID()`或`RAND()`等函数对记录进行随机排序,再使用`TOP`进行分页...