SQL點滴之SET QUOTED_IDENTIFIER OFF語句的作用

來源:互聯網
上載者:User

編者註:SET QUOTED_IDENTIFIER

使 Microsoft® SQL Server™ 遵從關於引號分隔識別碼和文字字串的 SQL-92 規則。由雙引號分隔的標識符可以是Transact-SQL 保留關鍵字,或者可以包含 Transact-SQL 標識符文法規則通常不允許的字元。

先看下面幾個sql語句

 
  1. SET QUOTED_IDENTIFIER ON 
  2. SELECT * FROM "USER"    WHERE a='netasp'   
  3.    
  4. SET QUOTED_IDENTIFIER ON 
  5. SELECT * FROM [USER] WHERE a='netasp'   
  6.  
  7. SET QUOTED_IDENTIFIER OFF 
  8. SELECT * FROM [USER]    WHERE a="netasp"   
  9.  
  10. SET QUOTED_IDENTIFIER OFF 
  11. 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+”打出來的,初學者可能會犯這樣的錯誤。
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.