web-dev-qa-db-ja.com

ベンダーに依存しないSQLの複数行コメント区切り文字はありますか?

SQLステートメントを編集、構築、またはチェリーピッキングしているときに、4つの人気のあるデータベースツールの1つを操作していることに気付くことがあります。私はDB2とInformixについて1行のコメントに頼ってきました。これを少し効率的にするためにvimでマクロを作成しましたが、一生懸命働いているのではないかと思っていました。

37
ojblass

CスタイルのコメントはSQL2003およびSQL2008では標準です(ただし、SQL 1999以前では標準ではありません)。次のDBMSはすべてCスタイルのコメントをサポートしています。

  • Informix
  • PostgreSQL
  • MySQL
  • オラクル
  • DB2
  • Sybase
  • アングル
  • Microsoft SQL Server
  • SQLite(3.7.2以降)
  • TeradataとAster

これはすべての可能なDBMSではありませんが、多かれ少なかれすべての主要なSQLDBMSです。 (Cスタイルのコメントをサポートする(またはサポートしない)他のDBMSに関するメモを喜んで追加します。)

SQL 2003標準は、コメント表記を次のように文書化しています。

<comment> ::= <simple comment> | <bracketed comment>

<simple comment> ::=
    <simple comment introducer> [ <comment character> ... ] <newline>

<simple comment introducer> ::=
    <minus sign> <minus sign> [ <minus sign> ... ]

<bracketed comment> ::=
    <bracketed comment introducer> <bracketed comment contents>
    <bracketed comment terminator>

<bracketed comment introducer> ::= <slash> <asterisk>

<bracketed comment terminator> ::= <asterisk> <slash>

<bracketed comment contents> ::= [ { <comment character> | <separator> }... ]

<comment character> ::= <nonquote character> | <quote>

IBM Informix Dynamic Server(IDSまたはInformix)は、Cスタイルのコメントをサポートします。また、「{ ... }」を潜在的に複数行のコメントとしてサポートします。ただし、他の何かを意味する場合、つまり、他の何かがLIST、SET、またはMULTISETリテラルである場合を除きます。 (DB-AccessがCスタイルのコメントで混乱する場合があります。これは別の問題です。)

43

ISO規格では、2つのダッシュで始まる1行のコメントのみが定義されています。一部のベンダーはCスタイルのコメント(つまり、/ *で始まり* /で終わる複数行)をサポートしていますが、「ベンダーにとらわれない」と見なすべきではありません。

8
Ben Hoffstein