T-SQL单双引号---分隔符相关

/*----------------------------------------
SQL DATABASE: SQL SERVER 2008
AUTHER:          CC
DATE:          2012-06-04

Description:
双引号(") : 用于表示引用的标识符
中括号([]): 用于表示括号中的标识符
t-sql中常在下列情况下使用分隔符
a. 对象名称或对象名称的组成部分中包含保留字时
b. 使用其它特殊的字符时
-------------------------------------------*/


USE TEST
GO

IF OBJECT_ID('tempdb..#t') IS NOT NULL
    DROP TABLE #t
GO

CREATE TABLE #T
(ID INT IDENTITY(1,1),
 TT NVARCHAR(10)
 )
/*-------------------------------
当 QUOTED_IDENTIFIER 为 ON  时,对于SQL语句中的双引号和单引号 (')的使用,SQL Server 遵循SQL-92:     
双引号只能用于分隔标识符,不能用于分隔字符串。     
为保持与现有应用程序的兼容性,SQL   Server   并不完全强制该规则。如果字符串没有超过标识符的长度,则该字符串可包含在双引号内。
但不建议这样做。   
单引号必须用来包含字符串,不能用于分隔标识符。     
如果字符串包含单引号,则需要在单引号前再增加一个单引号:  
--------------------------*/
SET QUOTED_IDENTIFIER ON

INSERT INTO #T(TT) VALUES ('AA+AA')
INSERT INTO #T(TT) VALUES ('AA''AA')
/*
ID    TT
1    AA+AA
2    AA'AA
*/
INSERT INTO #T(TT) VALUES  ("AA+AA")
--消息 207,级别 16,状态 1,第 4 行
--列名 'AA+AA' 无效。

select * from #T

/*---------------------------------------------
  当 QUOTED_IDENTIFIER 为 OFF 时,对于双引号和单引号的使用,SQL   Server遵循如下规则:        
  引号不能用于分隔标识符,而是用括号作为分隔符。          
  单引号或双引号可用于包含字符串。     
  如果使用双引号,嵌入的单引号不需要用两个单引号来表示:   
----------------------------------------------*/
SET QUOTED_IDENTIFIER OFF

INSERT INTO #T(TT) VALUES ("AA1+AA1");
INSERT INTO #T(TT) VALUES ("AA1'AA1");
INSERT INTO #T(TT) VALUES ('AA2+AA2');

select * from #T

注一个相关知识:http://www.cnblogs.com/ndxsdhy/archive/2010/12/02/1894545.html
posted @ 2012-06-04 17:49  _cc  阅读(1705)  评论(0编辑  收藏  举报