編者注:SET QUOTED_IDENTIFIER
使 Microsoft® SQL Server™ 遵從關于引號分隔標識符和文字字符串的 SQL-92 規(guī)則。由雙引號分隔的標識符可以是Transact-SQL 保留關鍵字,或者可以包含 Transact-SQL 標識符語法規(guī)則通常不允許的字符。
先看下面幾個sql語句
- SET QUOTED_IDENTIFIER ON
- SELECT * FROM "USER" WHERE a='netasp'
- SET QUOTED_IDENTIFIER ON
- SELECT * FROM [USER] WHERE a='netasp'
- SET QUOTED_IDENTIFIER OFF
- SELECT * FROM [USER] WHERE a="netasp"
- SET QUOTED_IDENTIFIER OFF
- SELECT * FROM [USER] WHERE a= 'netasp'
當在數據庫中新建一個名字是USER的表的時候,常常會帶來一些麻煩,因為USER是SQL中的關鍵字,但是上面的幾個語句不會報錯。再說一個概念:標示符是SQL中的中括號[]。
當SET QUOTED_IDENTIFIER值為ON時,雙引號內的字符被當作是數據庫對象。就是說雙引號" "和標識符[]效果是一樣樣的,他們都表示引用的字符是數據庫對象。單引號'表示字符串的邊界。
當SET QUOTDE_IDENTIFIER OFF時,雙引號被解釋為字符串的邊界,和單引號的作用是類似的。就是說雙引號"不能當做標識符使用,但是可以當做字符邊界,和單引號'的效果是一樣樣的。
可以做一個總結:當SET QUOTED_IDENTIFIER ON " "等同于[ ] 表示數據庫對象;當SET QUOTED_IDENTIFIER OFF " "等同于' '表示字符串邊界;還有這里的雙引號" 并不是兩個單引號'合起來的,是shift+”打出來的,初學者可能會犯這樣的錯誤。
原文鏈接:http://www.cnblogs.com/tylerdonet/archive/2010/08/01/1789979.html