SQL語法 分隔符理解小結

2022-09-25 05:18:11 字數 2756 閱讀 4164

兩者主要的區別在於:分隔的識別符號被括在雙引號中(transact-sql也支援方括號的使用:[識別符號])並且是區分大小寫的。單引號只用於字串的定界。總的來說,引入分隔的識別符號是為了對識別符號進行規範,否則就會與保留字相同了。特別要提到的是,分隔的識別符號能夠使你在命名(識別符號或變數的名字)的時候,免於使用在將來的sql標準中可能出現的保留字。另外,分隔的識別符號能夠包含一些在通常的識別符號名稱中被視為不合法的字元,如空格。

在sql server中,雙引號的使用由set 語句中的quoted_identifier選項來定義。如果這個選程式設計客棧項被設為on,則雙引號中的識別符號將被定義為乙個分隔的識別符號。在這種情況下,雙引號不能被用於定界字串。」

記住以下幾句話就能把分隔符理解了

以上這段話是書上的原話,我對分隔的識別符號的理解是:例如"hu","h u",[hu],

[ h u]這幾個識別符號都是不同的,在使用時就像使用a,b等識別符號一樣,只不過必須加上雙引號或中括號,不知這樣理解對不對。

我自己對分隔符的理解:分隔符就是為了起到分隔作用。 select * from "my table"

where "last name" = 'o''brien'

自我分析:select,from,where是關鍵字。"my table"就是標誌符,而」」就是分隔符

請大蝦們指教。

其實你理解的挺對的

但是別忘了它的作用是為了定義識別符號

符合所有識別符號格式規則的識別符號可以使用分隔符,也可以不使用分隔符。

不符合識別符號格式規則的識別符號必須使用分隔符。

分隔識別符號在下列情況下使用:

當在物件名稱或物件名稱的組成部分中使用保留字時。

推薦不要使用保留關鍵字作為物件名稱。從 microsoft® sql server™ 早期版本公升級的資料庫可能含有識別符號,這些識別符號包括早期版本中未保留而在 sql server 2000 中保留的字。可用分隔識別符號引用物件直到可改變其名稱。

當使用未被列為合法識別符號的字元時。

sql server 允許在分隔識別符號中使用當前**頁中的任何字元。但是,不加選擇地在物件名稱中使用特殊字元將使 sql 語句和指令碼難以閱讀和維護。

transact-sql 所使用的分隔符型別:

說明 分隔符僅用於識別符號。分隔符不能用於關鍵字,不論它們在 sql server 中是否被標記為保留字。

被引用的識別符號用雙引號 (") 分隔開:

select * from "blanks in table name"

括在括號中的識別符號用方括號 ([ ]) 分隔:

select * from [blanks in table name]

僅當 quoted_identifier 選項設定為 on 時,被引用的識別符號才有效。預設情況下,當用於 sql server 的 microsoft ole db 提供程式和 sql server odbc 驅動程式連線時,將 quoted_identifier 設定為 on。預設情況下,db-library 不將 quoted_identifier 設定為 on。不管使用何種介面,個別應用程式或使用者可隨時更改設定。sql server 提供了多種方法來指定該選項。例如程式設計客棧,在 sql server 企業管理器和 sql 查詢分析器中,該選項可在對話中設定。在 transact-sql 中,可以使用 set quoted_identifier、sp_dboption 的 quoted identifier 選項或 sp_configure 的 user options 選項將此選項設為多種級別。

當 quoted_identifier 為 on 時,對於 sql 語句中的雙引號和單引號 (') 的使用,sql server 遵循 sql-92 規則:

雙引號只能用於分隔識別符號,程式設計客棧不能用於分隔字串。

為保持與現有應用程式的相容性,sql server 並不完全強制該規則。如果字串沒有超過識別符號的長度,則該字串可包含在雙引號內。但不建議這樣做。

單引號必須用來包含字串,不能用於分隔識別符號。

如果字串包含單引號,則需要在單引號前再增加乙個單引號:

select * from "my table"

where "last name" = 'o''brien'

當 quoted_identifier 為 off 時,對於雙引號和單引號的使用,sql server 遵循如下規則:

引號不能用於分隔識別符號,而是用括號作為分隔符。

單引號或雙引號可用於包含字串。

如果使用雙引號,嵌入的單引號不需要用兩個單引號來表示:

select * from [my table]

where [last name] = "o'brien"

無論 quoted_identifier 的設定如何,都可以在括號中使用分隔符。

分隔識別符號規則

分隔識別符號的格式規則是:

分隔識別符號可以包含與常規識別符號相同的字元數(1 到 128 個,不包括分隔符字元)。本地臨時表識別符號最多可以包含 116 個字元。

識別符號的主體可以包含當前**頁內字母(分隔符本身除外)的任意組合。例如,分隔符識別符號可以包含空格、對常規識別符號有效的任何字元以及下列任何字元: 代字型大小 (~) 連字元 (-)

驚嘆號 (!) 左括號 (www.cppcns.com)

插入號 (^) 撇號 (') www.cppcns.com

and 號 (&) 句號 (.)

左圓括號 (() 反斜槓 (\)

右圓括號 ()) 重音符號 (`)

本文標題: sql語法 分隔符理解小結

本文位址:

php正則語法 分隔符

當使用 pcre 函式的時候,模式需要由分隔符閉合包裹。分隔符可以使任意非字母數字 非反斜線 非空白字元。經常使用的分隔符是正斜線 hash符號 以及取反符號 下面的例子都是使用合法分隔符的模式。foo bar 0 9 php a za z0 9 正規表示式中的處理選項,應該放在分割符後面,例如 f...

sql 中的分隔符

1 通過分隔符可以將其中的內容作為乙個整體的字串進行處理。假設資料庫中有乙個表,名為user info,注意這個名字,user 和 info 中間存在乙個空格。如果直接寫如下查詢,會報錯,可能會提示 user 表不存在或者 user 附近有語法錯誤。select from user info 這時就...

Hive的列分隔符和行分隔符

在建立hive表時,預設行分隔符 a 列分隔符 n 這兩項也是可以設定的。在實際開發中,一般預設使用預設的分隔符,當然有些場景下也會自定義分隔符。spark hive use test db 建立外部表 create external table test tb user id bigint com...