SQL 有可用的 BNF 语法吗?

Is there a BNF grammar available for SQL?

我不想自己创建语法。我确实下载了一个 'grammar' 但它是以非标准形式为 ANTLR 或 Yacc 编写的,它包含词法分析器语句。我需要一些时间来区分两者并为解析器生成器引入正确的语法。

有很多 SQL 语法适用于解析器生成器,因为大多数 SQL 处理器使用解析器生成器来生成它们的解析器。这些可能会或可能不会满足您的需求,具体取决于您对哪种 SQL 方言感兴趣,以及您计划使用哪种解析器生成器。

这里有几个例子。这些都是从各自数据库的官方代码存储库中获取的,我认为这避免了 "opinion-based" 避免资源请求的标准。互联网上也散布着许多非官方语法,尤其是在 Github 上,但并非所有语法都是正确或可用的。