这是今天办公室里发生的.我不打算做这样的事情,但理论上你能用SQL编写一个编译器吗?乍一看,它似乎是图灵完备的,尽管对于许多类的问题来说非常麻烦.

如果它不是图灵完备的,那么它需要什么才能成为图灵完备的呢?

注意:我不想做任何事情,比如用SQL编写编译器,我知道这是一件愚蠢的事情,所以如果我们能避免这种讨论,我将不胜感激.

推荐答案

事实证明,即使没有真正的"脚本"扩展,比如PL/SQL或PSM(它们被设计成真正的编程语言,所以这有点作弊),SQL也可以是图灵完全的.

this set of slides年中,Andrew Gierth通过构造一个cyclic tag system证明了在CTE和窗口化的情况下SQL是图灵完备的,这个cyclic tag system已经被证明是图灵完备的.然而,CTE特性是重要的一部分——它允许您创建可以引用自身的命名子表达式,从而递归地解决问题.

有趣的是,添加CTE并不是为了将SQL变成一种编程语言——只是为了将一种声明性查询语言变成一种更强大的声明性查询语言.类似于C++,其模板原来是图灵完成,即使它们不是用来创建元编程语言的.

哦,Mandelbrot set in SQL个例子也令人印象深刻:)

Sql相关问答推荐

按CTE创建任务表

查询将查找将标记设置为user2的用户

使用SQL/R循环查找邻居

Access 365将文本转换回BigInt

你能过滤一个列表只返回多个结果吗?

PostgreSQL:按小时查看调整日期

NULL-生成的列中连接的字符串的输入

DBeaver将过程中的属性列表转换为字符串

查询页面推荐

我如何才能在付款人单列中拉出只有9个付款人单的人?

基于另一个(SAS、SQL)中的值更新列

从JSON值数组创建扁平数组Athena

将SQL Server查询改进为;线程安全;

将时间戳四舍五入到最近 10 分钟的查询

PostgreSQL-用第一个非空填充以前的值

带聚合函数的 percentile_cont

函数调用作为插入值语句中的参数

如何在 ClickHouse SQL 中使用 CTE 将邻居语句中的数字作为偏移量传递?

强制 SQL 始终通过 R 从视图中返回至少一行

如何 Select 一列具有最小值而另一列具有给定值的记录?