代码之家  ›  专栏  ›  技术社区  ›  Armen Tsirunyan

quine(自生成)SQL查询

  •  4
  • Armen Tsirunyan  · 技术社区  · 14 年前

    This 是一篇非常有趣的wiki文章,介绍的程序在不访问物理源文件(在文件系统中)的情况下打印自己的源代码。文章中的例子包括C和Scheme-quine程序(是的,看起来它们是这样被调用的)。我记得很久以前(大约5年前)有人问我是否可以编写一个“返回自身”的SQL查询。那时候我很少考虑这个问题(老实说,我根本没有考虑过)。但读完这篇文章后,我想起了那件事。现在我想说的是,问这个问题的人并不是百分之百的可信,因为他很可能根本不知道自己在说什么。但也许有可能?那么,是否有人知道是否存在quine SQL查询,无论“return self”在该上下文中是什么意思。谢谢。

    4 回复  |  直到 14 年前
        1
  •  7
  •   ypercubeᵀᴹ    8 年前

    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

        2
  •  2
  •   JBanana    11 年前

    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
    
        3
  •  1
  •   Dr Y Wit    6 年前

    Oracle SQL Revealed .

    123字节

    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;
    
        4
  •  0
  •   Dorian    6 年前

    很抱歉把这个挖出来了。我对MS SQL Server的最短版本是这个131个字符的奎因:

    DECLARE @ CHAR(65)='DECLARE @ CHAR(65)=#PRINT REPLACE(@,CHAR(35),CHAR(39)+@+CHAR(39))'PRINT REPLACE(@,CHAR(35),CHAR(39)+@+CHAR(39))