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

ojb*_*ass 37 sql comments

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

Jon*_*ler 42

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

  • Informix的
  • PostgreSQL的
  • MySQL的
  • 神谕
  • DB2
  • SYBASE
  • 安格尔
  • 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>
Run Code Online (Sandbox Code Playgroud)

IBM Informix Dynamic Server(IDS或Informix)支持C样式注释.它还支持' { ... }'作为潜在的多行注释,除非在它意味着其他东西的上下文中 - 其他东西是LIST或SET或MULTISET文字.(您可能会发现DB-Access被C样式注释混淆;这是一个单独的问题.)


Ben*_*ein 8

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