This是一篇非常有趣的wiki文章,关于打印自己的源代码而无需访问物理源文件(在文件系统中)的程序。文章中的例子包括C和Scheme quine程序(是的,似乎它们就像那样被称为)。我记得有人问我很久以前(大约5年)是否可以编写一个“返回自己”的SQL查询。我当时很少考虑过这个问题(说实话,我根本没有考虑过它)。但在阅读完这篇文章后,我回想起那件事。现在我想说的是,那个问这个问题的人不是100%可信,因为他几乎不可能知道他在说什么。但也许有可能吗?那么,有没有人知道是否存在quine SQL查询,无论“返回本身”在该上下文中是什么意思。谢谢。
答案 0 :(得分:7)
SQL Server版本,来自here:
SELECT REPLACE(REPLACE('SELECT REPLACE(REPLACE("$",CHAR(34),CHAR(39)),CHAR(36),"$") AS Quine',CHAR(34),CHAR(39)),CHAR(36),'SELECT REPLACE(REPLACE("$",CHAR(34),CHAR(39)),CHAR(36),"$") AS Quine') AS Quine
答案 1 :(得分:2)
Oracle版本:
SELECT REPLACE(REPLACE('SELECT REPLACE(REPLACE("$",CHR(34),CHR(39)),CHR(36),"$") AS Quine FROM dual',CHR(34),CHR(39)),CHR(36),'SELECT REPLACE(REPLACE("$",CHR(34),CHR(39)),CHR(36),"$") AS Quine FROM dual') AS Quine FROM dual
答案 2 :(得分:1)
Oracle SQL Revealed书中的几种解决方案。
select
replace('@''[@'||chr(93)||''')from dual;','@',q'[select
replace('@''[@'||chr(93)||''')from dual;','@',q]')from dual;
select
substr(rpad(1,125,'||chr(39)),26)from dual;select
substr(rpad(1,125,'||chr(39)),26)from dual;
答案 3 :(得分:0)
很抱歉把它挖出来。我最短的MS SQL Server版本是131个字符长的quine:
DECLARE @ CHAR(65)='DECLARE @ CHAR(65)=#PRINT REPLACE(@,CHAR(35),CHAR(39)+@+CHAR(39))'PRINT REPLACE(@,CHAR(35),CHAR(39)+@+CHAR(39))
答案 4 :(得分:0)