Ben*_*oit 7 sql language-design
我注意到使用 Oracle 或 SQLite,这样的查询是完全有效的
\n\nSELECT*FROM(SELECT a,MAX(b)i FROM c GROUP BY\xc2\xa0a)WHERE(a=1)OR(i=2);\nRun Code Online (Sandbox Code Playgroud)\n\nSQL 的 \xe2\x80\x9cfeature\xe2\x80\x9d 是否不需要用空格包围查询的关键字或单词?如果是这样,为什么要这样设计?SQL 被设计为可读的,这似乎是一种混淆形式(尤其MAX(b)i是i是用作别名的令牌)
SQL-92 BNF Grammar 此处明确指出分隔符(括号、空格、* 等)对于分解标记是有效的,这使得white space在其他分隔符已经分解标记的各种情况下可选。
这不仅适用于 SQLite 和 Oracle,至少适用于 MySQL 和 SQL Server(我使用并测试过),因为它是在语言定义中指定的。
| 归档时间: |
|
| 查看次数: |
14927 次 |
| 最近记录: |