我最近对将程序代码转换为SQL的行为感兴趣。我知道并非绝对一切都是用图灵完整的程序语言来表达的。
如果您有特殊用途的程序语言怎么办?例如转换这样的东西:
foreach(var row in Table){
if(row.FirstName=="Foo"){
yield new {row.TableRID};
}
}
进入这个:
select TableRID from Table where FirstName='Foo'
这样的名字有名字吗?
另外,在我的伪代码中假设row
是不可变的,并且不可能做Table[0].FirstName...
之类的事情以及其他很明显没有(简单)转换成ANSI SQL的东西。
有人可以给我一个名字吗?
答案 0 :(得分:0)
一切都可以用图灵完整的程序语言表达。但是,它并不总是富有表现力。有时,您可以通过消除权力,创建特定于域的语言或 DSL 来获得表达力,以解决您想要解决的问题。也许这就是你要找的词?
没有扩展名的SQL不是图灵完备的,所以正如您所注意到的,只能转换图灵完备语言的可能程序的一部分。