sql server单引号和双引号的区别

--当 SET QUOTED_IDENTIFIER 为 ON 时,标识符可以由双引号分隔,而文字必须由单引号分隔
--当 SET QUOTED_IDENTIFIER 为 OFF(默认值)时,表达式中的文字字符串可以由单引号或双引号分隔

SET QUOTED_IDENTIFIER ON

--SELECT "1" --"为标识定界符,1理解为标识符,等价于
--SELECT [1] --即1为列名之类的数据库对象
/*
消息 207,级别 16,状态 1,第 2 行
列名 '1' 无效。

*/

SELECT '1' --'为字串定界符,这里1为字串值
/*
1
*/
SELECT "id" FROM xx --"为标识定界符
/*
id
1
2
3
*/
--等价于
SELECT [id] FROM xx
/*
id
1
2
3
*/


SET QUOTED_IDENTIFIER OFF
SELECT "1" --"用作字串定界符,这里1为字串值,等价于
/*
1
*/
SELECT '1'
/*
1
*/
SELECT "id" FROM xx --因为在OFF状态下,"成为了字串定界符,因此这里不会选出id列,而会是常量字串,"id"是字串值
/*
id
id
id
表xx里有三条记录
*/

原文地址:https://www.cnblogs.com/lip-blog/p/7515528.html