/*----------------------------------------
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