SQL中的多行注释分隔符是否与供应商无关?

从SQL语句中编辑,build立或摘取樱桃时,我可以发现自己正在与四种stream行的数据库工具之一进行交互。 我一直在求助于DB2和Informix的单行注释。 我在vim中创build了macros来使这个效率稍微高一些,但是我想知道我是否工作太辛苦了。

C风格注释在SQL 2003和SQL 2008中是标准的(但不是在1999或以前的SQL中)。 以下DBMS全部支持C风格的评论:

  • Informix的
  • PostgreSQL的
  • MySQL的
  • 神谕
  • DB2
  • SYBASE
  • 安格尔
  • Microsoft SQL Server
  • SQLite(3.7.2及更高版本)
  • Teradata和Aster

这不是每个可能的DBMS,但它是或多或less每个主要的SQL DBMS。 (我会随便添加关于任何其他支持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风格的注释混淆;这是一个单独的问题。)

ISO标准只定义了以两个破折号开始的单行注释。 一些供应商支持C风格的评论(即多行以/ *开头,以* /结尾),但不应被视为“供应商不可知论者”。