SQL點滴之SET QUOTED_IDENTIFIER OFF語句的作用
編者注:SET QUOTED_IDENTIFIER
使 Microsoft® SQL Server™ 遵從關(guān)于引號分隔標(biāo)識符和文字字符串的 SQL-92 規(guī)則。由雙引號分隔的標(biāo)識符可以是Transact-SQL 保留關(guān)鍵字,或者可以包含 Transact-SQL 標(biāo)識符語法規(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'
當(dāng)在數(shù)據(jù)庫中新建一個名字是USER的表的時候,常常會帶來一些麻煩,因為USER是SQL中的關(guān)鍵字,但是上面的幾個語句不會報錯。再說一個概念:標(biāo)示符是SQL中的中括號[]。
當(dāng)SET QUOTED_IDENTIFIER值為ON時,雙引號內(nèi)的字符被當(dāng)作是數(shù)據(jù)庫對象。就是說雙引號" "和標(biāo)識符[]效果是一樣樣的,他們都表示引用的字符是數(shù)據(jù)庫對象。單引號'表示字符串的邊界。
當(dāng)SET QUOTDE_IDENTIFIER OFF時,雙引號被解釋為字符串的邊界,和單引號的作用是類似的。就是說雙引號"不能當(dāng)做標(biāo)識符使用,但是可以當(dāng)做字符邊界,和單引號'的效果是一樣樣的。
可以做一個總結(jié):當(dāng)SET QUOTED_IDENTIFIER ON " "等同于[ ] 表示數(shù)據(jù)庫對象;當(dāng)SET QUOTED_IDENTIFIER OFF " "等同于' '表示字符串邊界;還有這里的雙引號" 并不是兩個單引號'合起來的,是shift+”打出來的,初學(xué)者可能會犯這樣的錯誤。
原文鏈接:http://www.cnblogs.com/tylerdonet/archive/2010/08/01/1789979.html
【編輯推薦】