作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在试验最终用户以 yaml 格式表达查询的一些随机想法。这个 yaml 文件将被送入一些中间转换器以将 yaml 转换为 SQL 语句。
以下是示例 yaml 片段,但当我想到有条件、表达式、子查询、连接时。随着查询趋于更加复杂,yaml 变得更加复杂。
问题:如何定义一个yaml格式的SQL查询并覆盖所有场景? (有没有现成的库可以做这种魔术)
table:
schema: test
name: test_table
select:
columns:
- column: * # retrieve all columns
where:
columns:
- column: user_id
- column: customer_id
limit:
value: 10
# groupBy
# orderBy
最佳答案
你的问题的答案是:你将SQL语句的语法树序列化为YAML。
快速浏览一下 pg_query了解这棵树即使对于简单的查询也有多么复杂(该工具使用 Postgres 的 SQL 解析器生成 SQL 语句的语法树)。 覆盖所有场景需要这种复杂性。
现在您当然可以尝试简化此结构,使其保留重建原始语法树所需的所有信息。 这正是 SQL 查询语言所做的!当用户可以使用定义明确且支持良好的语法来表达查询时,他们不想写下显式结构。
基本上,您会在语法树和原始 SQL 语言之间的某处创建一种全新的、基于 YAML 的语言。使用它需要用户了解 YAML 和结构的语义。因此,如果您的目标是增强用户友好性,这不太可能成为实现目标的方法。
关于sql - 如何用yaml格式表达SQL查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60530599/
我是一名优秀的程序员,十分优秀!