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

时间:2009-04-08 01:17:24

标签: sql comments

在编辑,构建或从SQL语句中挑选时,我发现自己可以与四种流行的数据库工具之一进行交互。我一直在使用DB2和Informix的单行注释。我已经在vim中创建了宏来提高效率,但我想知道我是否工作得太辛苦了。

2 个答案:

答案 0 :(得分:42)

C样式注释在SQL 2003和SQL 2008中是标准的(但在SQL 1999或之前不是)。 以下DBMS都支持C样式注释:

  • 的Informix
  • 的PostgreSQL
  • MySQL的
  • 甲骨文
  • DB2
  • 的Sybase
  • 的Ingres
  • Microsoft SQL Server
  • SQLite(3.7.2及更高版本)
  • Teradata和Aster

这不是每个可能的DBMS,但它或多或少都是每个主要的SQL DBMS。 (我愿意添加关于任何其他DBMS的注释,这些DBMS支持或不支持C风格注释。)

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样式注释混淆;这是一个单独的问题。)

答案 1 :(得分:8)

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