小编典典

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

sql

从SQL语句进行编辑,构建或挑选时,我发现自己正在与四种流行的数据库工具之一进行交互。我一直在求助于DB2和Informix的单行注释。我在vim中创建了宏,以使其效率更高一些,但是我想知道我是否在努力工作。


阅读 221

收藏
2021-04-19

共1个答案

小编典典

C样式注释在SQL 2003和SQL 2008中是标准的(但在SQL 1999或更早版本中不是)。以下DBMS均支持C样式注释:

  • Informix
  • PostgreSQL
  • MySQL
  • Oracle
  • DB2
  • Sybase
  • Ingres
  • Microsoft SQL Server
  • SQLite (3.7.2 and later)
  • Teradata and Aster

那不是每个可能的DBMS,但或多或​​少是每个主要的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样式的注释弄糊涂了;这是一个单独的问题。)

2021-04-19