6.1.2 分離符号に関する規則
(1) 分離符号とは
SQLを記述する際,キーワードとキーワードの間や,キーワードと名前の間などに,次の分離符号を入れる必要があります。
-
空白
次に示す文字が空白として使用できます。
-
半角空白
-
全角空白
-
CR(Carriage Return):復帰
-
NL(New Line):改行
-
TAB
-
-
注釈
(2) 分離符号の記述位置
次に示す個所に分離符号を記述します。
-
キーワードとキーワードの間
-
キーワードと名前の間
-
名前と名前の間
-
キーワードと数値の間
-
名前と数値の間
分離符号の記述位置の例を次の図に示します。
(3) 分離符号を記述できない位置
次に示す個所には分離符号を記述できません。
-
キーワードの中
-
二重引用符(")で囲まれていない名前の中
-
名前を囲む初めの二重引用符(")の後ろ
-
名前を囲む終わりの二重引用符(")の前
-
数定数の中(ただし,先頭に指定した符号の後ろを除く)
-
16進形式バイナリ定数を表す「X'…'」の,Xと次の「 ' 」の間
-
2進形式バイナリ定数を表す「B'…'」の,Bと次の「 ' 」の間
-
演算子の中(2文字から成る比較演算子の中)
分離符号を記述できない位置の例を次の図に示します。
(4) 分離符号を記述してもよい位置
分離符号を記述してもよい位置を次に示します。
-
次に示す特殊記号の前後で,かつ「(3) 分離符号を記述できない位置」で挿入を禁止されていない位置
「,」「.」「-」「+」「*」「'」「"」「(」「)」「[」「]」「<」「>」「=」「^」「!」「?」「TAB」「NL」「CR」「半角空白」「全角空白」
分離符号を記述してもよい位置の例を次の図に示します。
(5) 注釈
SQL文中の分離符号を記述してもよい位置に注釈を記述できます。注釈の記述例を次に示します。
- (例)
-
SELECT "C1","C2" FROM "T1" /* comment1 */ ORDER BY "C1" ASC /* comment2 */
下線部分が注釈です。上記のように「/*〜*/」の間が注釈と見なされます。
注釈を記述する際の注意事項を次に示します。
-
識別子中または文字列定数中に注釈は記述できません。
-
注釈は入れ子にできません。
(例)
SELECT * FROM "T1" /* /* comment1 */ comment2 */
上記のように注釈を入れ子で指定した場合,構文解析エラーになります。
-
二重引用符(")またはアポストロフィ(')で囲まれた「/*〜*/」は注釈と見なされません。
(例)
SELECT * FROM "T1" WHERE "C1"='/* comment */'
上記の下線部分は,注釈ではなく,文字列定数と見なされます。
-
「/*>>〜<<*/」と指定した場合,「/*>>〜<<*/」は注釈と見なされません。
(例)
SELECT * FROM "T1" /*>> WITHOUT INDEX <<*/
上記の下線部分は,注釈ではなく,インデクス指定と見なされます。インデクス指定については,「7.14 インデクス指定」を参照してください。
なお,「/*>>〜<<*/」のインデクス指定中に注釈を記述できます。
(例)
SELECT * FROM "T1" /*>> WITHOUT INDEX /* WITH INDEX(INDEXNAME)*/ <<*/
上記の下線部分は,注釈と見なされます。したがって,下記のSQL文が指定されたと見なされます。
SELECT * FROM "T1" /*>> WITHOUT INDEX <<*/
-
注釈に「/*>>〜<<*/」の形式の指定はできません。例えば,注釈中にインデクス指定は指定できません。
(例)
SELECT * FROM "T1" /* /*>> WITHOUT INDEX <<*/ */
注釈中に上記の下線部分(この例の場合はインデクス指定)を指定すると,このSQL文は構文解析エラーになります。