Seven years after the first Obfuscated SQL Code Contest, a new one has been organised on the PL/SQL Challenge website. I had fun writing my first entry back then, but in the back of my mind I regretted not doing something with ASCII art. So the new contest was a good pretext for me to finally fill in that gap. Here is my entry for the second Obfuscated SQL Contest:
SQL> select listagg 2 (chr(nvl2(x,y, 3 32*nvl2(a,1,2) 4 )))within group 5 (order by l) 6 mona_lisa from 7 (select level"L" 8 from user_users 9 connect by 2*3*4 10 *8*16+64>=rownum 11 )l left join ( 12 select ascii('@' 13 )*(ascii(substr( 14 x,rownum*3-2,1)) 15 -65)-65+ascii ( 16 substr(x,rownum* 17 3-1,1))"A",ascii( 18 '@')*(ascii(substr 19 (x,rownum*3-2,1))- 20 65) -131+ascii( 21 substr(x,rownum*3 22 -1,1))+ascii(substr 23 (x,rownum*3,1))"B" 24 from(select'HUKI'|| 25 'RLJRPKOULOUMNWN'|| 26 'NVONUPNVQBDQNYR'|| 27 'BDRMZSNOTUGUVEV'|| 28 'WDW]EXVEXgEYLOY'|| 29 ']NZLNZ\N[MN[^K\'|| 30 'MO\]L]NM]^J^OG^'|| 31 'VD^^I_OF_^H`QF`'|| 32 '^EdSEeTDfUHgUHh'|| 33 'WDaSF'x from dual 34 where 1=1/*voor@ 35 patch72*/group by 36 cube('m','o', 37 'n','a','l', 38 'i','s','a') having 39 grouping_id('m','o','n','a', 40 'l','i','s','a')between 11 and 58))x on 41 (l between a and b) left join (with x(v) 42 as(select 1 from dual union all select 43 x.v+1 from dual join x on(28>=x.v))search 44 depth first by v set a select(16+v+decode 45 (sign(round((v-6)/5)),-1,0,0,1,4))*64"X", 46 91"Y"from x union all select p,x from ( 47 select x,y,sum(nvl2(nullif(z,1),z-1,1)) 48 over (order by i) p from (select i,x,y 49 ,nvl(nullif(dense_rank()over(order by 50 decode(y,'louvre',x) nulls first 51 ),28),29)z from(select i,x,case 52 when x in(34,35,36,37,38,48, 53 49,51,54,57,58,59,60,62,63 54 ,64,66,67,69,70,72,73,79, 55 81,82,83,85)then'louvre' 56 end y from(select i, 57 158-ascii(regexp_substr 58 (x,'((.)?)',i,1))x from 59 user_users model return updated 60 rows dimension by(1 i) measures 61 (rpad('leonardo da vinci',7 62 *6*5*4*2-1)x)(x[for i from 1 to 1679 increment 1]='5>5*u("CCCCvoo'|| 63 '+su>vqBBoTT7<::m:1SSv;}voqClao;;*o}q(B}?RBu"Aq}ov}quBRBu(";iv}r}'|| 64 'R::Y:SoA};BBB("5Bo;JB(vv;qA}>o(Boovq"*BH(;R}1xQX<R*BB"u;olq((uo5'|| 65 '*BpqqoqrBrB(Br"uo(o1nSO<S}(}qv~uq}pCo;J~oopBqqwqq"qo;v9mZZK+BBBB'|| 66 'q""o(};Bpqrq"B>""BqBo5:kPI<pur>qrqo;q>5}rB}q}q}w}q}:mNCs tt]]]O<'|| 67 'opo>;qopBgqqqwpqq~qor5:ztN}>eBwDfV5pBBwpBp;~wr>r>BwqrqT{i>qdqq~>'|| 68 'q5E]e<h?Bq"qB;q~wp~qpr>opW{Sq~>_q~ugSQY;qqqqqo~q~>q~~qq5{]5Xq}DD'|| 69 'Y<}~B>"q>~>qrwq~WzCrXwpZfSYCoqrqopq>~pqo(z]uUquD:Q:[Bw~?B~q~>~r5'|| 70 'HTz}Vwq}vSiS[Cvo+Cp~~q~5BWzDqXw~}~q5iiDD\uvju>~r~q"<y}BVw~~>~"q*'|| 71 'EW^FPEDqz**y]qrMw~~>uv:^Zuf]yufxBLrqwqoS:\SZ{~~AADy:"q`r55p;rr~q'|| 72 'p5;RDSSnf|Shv|f|~~SPfxv~p5}(WW?nTjS<fDS<|<<S|:|ffm<e:S|q~uofSzS|'|| 73 '<|:N JjvyT:{g>???+|QyQQf:z:cRQf|B}jf|Syf{:tz<H5z<]SRE nt88oBP'|| 74 'Qf_:<{rBBS<z:|p *>~}t }>p~~qQ]uyw wpup>~>rwS\]S<|r>fQn~q>rr7(D>>'|| 75 'y]ooq~~pp;BsB>y5A:nQdf|5B|f|SzZ`B}wb}5Dfzf]xf:|<zfQ|9f:iYw}qbwqu'|| 76 'f[Qf5f:Df|Qyqb(~~rerB*Sc]nDl"|<|]Sz<|C`ood;;*<]z]S{:{:zSz<15{f|Q'|| 77 '|fzNqcqaopho5Zf:`]z:yfzQ]yBqnpz?u7l5kqvv:SSx:y:{SnSy<]S{S{u5xw;r'|| 78 'rS<{<SmuFuS<|Q{:zQ<{]|:nfzS|<y]|]]o5qx QyQ;yprB;auZf:{<z:ef:{]xQ'|| 79 '<nvw;B>xNNSvvr5A("qBq(ufFP]:QSm<{QS|]kf{QS|:|]|R}qq;u+?r~rvD+<R<'|| 80 '|B>q~pqPAoSQm:z]k:yS<zS|<zoq~~}ww H88tPi8~q>~qrBuuSSmQS{:zQf:|<'|| 81 'x<zS]Snlqqyrr?TTo5uoq~"o(uPS|f:efkQ|Szf:|Sz<x:}rzwHHBuBBuBgvqujT'|| 82 '<|f|]zS|:mfhQyf{S|S<z:|(pm>qBBo(uff<|Q|]|S{Qz]{Q|f{]|:|f|Q|D<|:|'|| 83 'Q|Se1mqu}o+*<<|<{]|<xS<m<zSyS{:x:|Q|fxS+zrqo(TZ{f:|SnfeQSz<{Q{*P'|| 84 '|<{:|:|QeRRjTS:|]{:{SyQSyfd<nuPQ|f<{]z]`]{]{f{S|:yQ{S{S|]zf{Qxv*'|| 85 'QQz:{Qfy]y]z]h]yf<{f:^Q|*PD{Sz:y]xfzojP{f|<{:{Q|f|QS|Qf|Sn:hQoS]'|| 86 'fzQ]zQeC"*tD|Pyf{QfD]DD|Qz]|:xSz:{<ETjQn]cZpBwvESSDZ|f:S|i]fjED|'|| 87 ':Qc:zSi:Qf|f:|:kfnppq}ouuDSi]Sju]EvoFEoDz]z:zQxEf:P]{]S{:z<hRrqr'|| 88 'B}AABFviuDog;BB*ioSk<mfQfz]z]{fhSZR*}~}rq"*wvqBB}rBorB}DTWz:|Q:zW' 89 )))))where y is null)y on(l.l=y.x)group by ceil(l.l/(2*ascii(' '))) 90 / MONA_LISA ----------------------------------------------------------------- i`it)v|[[[[(//s+)`(-\\/JJgbdd@@@@@@@dmKK(c!(/-[2=/cct/!-v\!_L\)| ]-!/(!-)\L\)v|c5(!,!Ldd@@@@@@@@@@@@@@@@@@@dK/]!c\\\v|i\/cT\v((c- ]!`/v\//(-|t\VvcL!m@@@@@M@@@@@@@@@@@@@@@@@@@@bLt\\|)c/2-vv)/it\. --/-,\,\v\,|)/v/m@@@@@@K@@@@@@@@@@@@@@@@@@@@@@@bK!v!-( )-!.[/cT //.\--'--|-/c(e@@@@@@@DD@@@@@@@@@@@@@@@@@@@@@@@@@@s\\\\-||/v!c\. -,-|\`||\-\/id@@@@@@@@N@@@@@@@@@@@@@@@@@@@@@@@@@@@@b.),`-,-/c-`i !,\!-!-!'!-!d@@@@@@@P[+~**AAA@@@@@@@@@@@@@@@@@@@@@@@b/./`c-/.\7- --'.-- -/,id@@@*P!` \'Z8@@@@@@@@@@@@@@@@@@@@@i.\\'.\.c ',`,`\'-,-J@@5`- -- `-iYA@@@@@@@@@@b@@@@@@@@@_\-|-\c- '. -.,`/.G@@K- ` - )7KM@@@@@@@@@@@@@@@@@@@c-----/ - `- --i@@Ai -!ZZ@@@@@@@@@@@@@@@@@@@b! \`|-` `-,'- G@@@[, '.D8K@@@@@@@@@@@@@@@@@@@[/-,-/. -` .-/v@@@A) -)ZdMd@@@@@@@@@@@@@@@@@@\' _\ - ` ,iVJ@@@! '-!(K5K@@@@@@@@@@@@@@@@@@[(/s[. - i\G@@@Z- ' ! -i55ZZ@@@@@@@@@@@@@@@@@)(4)` , -|b@@@@!\ ' ` |-tYG@@@@@@@@@@@@@@@@XNYZ- tt@@@@A-, ' `)(d@@@@@@@@@@@@@@@@D)8A[ )8@@@@@\ ,-'-/Kd@@@@@@@@@@@@@@@@@KD@[ ]]Z@@@@d|- ,ii.c,, -.icLZKK@@@@@@8@K@@@@@@@@@(@8[ KN8@@@@@( .i!vGG_ J4Kb8ZKb@bbK@d@88@@@@@@@b@@@@@@@@@@dK@- )/8K@@@K@b@dP~~~T4( Jd@@7`___s@M@@@@MM8d@@@d@@@@@@@@@@@@LM8[ \!48@K@@@@8@@d*@@@bVi bAKLY~~@@@@@@*ff/\NM8@@@@@@@@@@@@@@@db@[ ,\\Kb@@@d@.~t` !*~!`. -MA) '~'.).` `,'K@@@@@@@@@@@@@@@@@AKb[ ,`8M@@@@@@ -`,,gvZ`` A//- ..c\+\` i]d@@@@@@M@@@@@@@@@@@8[ i\@8@K@@@D \!' !iZ8@@@8A@@@@@8d@b@@@8M[ e8d5@@@@@@ '!- '-)8@@@@@@@@@@@@@@@@@@M8i 8dZ8@M@@@@- v , ,\tK@@@@@@@@@@@@A@@@@@@Z2| @b@AK@@@b@[ // cctbA@@@AK@@d@@d@@@K@@@bmi @@8@M@8@@@P- -=/. /iD8d@@@@@@@@@@@@@@A@@@d@@[ @8@@@MA@@@@\- . _)g2i -((dKK@@@@@d@@@@d@@K@@@@@@K[ @@@bAK@@K@@)i 'c,,Kb@@bK )X)Kb@M@@d@@@Mb@@A@d@@@@@@8@[ @K@b@@@@A@AA/i- ~M@@@@Mc .,\c=)D8d@@b@@@d@@@@@@@@@@8d@@A[ @@@@Mb@@@@@@('c\` PPK((,i]v|-\-v)8XNAdMK@@@@@@@b@@MK@A@@@@@[ @@8@@MK@d@A@L!--c)s_, ,(ZsbLb@\`- .-N]/KM@@@@@@@d@@@A@@@@@@@@d@[ @@Kb@@@K@b@@@/- !''~~Vff*N5f -` -,\))KK@@@@@@@MK@@d@@@M8d@b@@@[ @b@@@KAK@@@@@@2-- ,,_JJ/i)/- |/v)NK@8d@@@@@@@@@@8@@@@@@@@M@K[ @@8d@K@@@b@@@@@d!, 'VV\)\\)\7(-)4Jb@8@A@@@K@d@@@@@@@8@@@@@@@@[ M@@@@8@@K@Kb@@@d@v. `-\\/v)88b@M@A@K@@M@@@A@@M@8@@A@d@8@M[ Zb@d@M@K@@@@@@@@@@m -)!/stbb@b@@A@b@@@@@Kb@@@@@@@b@@@K@@@[ K@@d@@@@@d@M@8@@@@@Ks ,-/vJD@@8d@K@@@@@@8@@@@@@@@@@MK@@@b@@M@[ tN@b@@d@d@M@@@@@@@@@@LL4JKd@A@@d@@K@@@@MK@@@@8@@@@@@@@@@@b@@@@@[ )NM@8b@@A@@@A@@@@@@@@@@@@@@A@@A@@8@@K@d@@@@M@@K@@K@A@@@8@@M@@@@[ (tMM@@@d@@M8@@@@A@@@@A@@@A@@@@@@@@@A@@@@8b@@8d@@@@@@@@@@@@@@@@M[ tNZ@@K@@@d@@@@A@@@@@8@@@/4N@@8@b@@d@@M@8@MK@M8@K@@@@@@d@@@@@@@@[ M/KA8@@@MA@@@M@@@@@@@@@@[|t*Z@N@@@@8@@M8ZAZZ@M@@@A@d@@@@@K@@@d@[ bYJ4M@@@@@@A@@@@@@@@@@@@D.\'(YKKZD@8dK@5A84YZ@dM@@@@@@@@@@@@d@@[ K5dM8@8d@d@@@@@@@@8@@@@@@..-!/))ZK5AK4)AY(/XY/Z@@@A@@@d@@@M@@@@[ Y8dNA@@AK@@d@@@b@@@@@@@@@L,-,\!]]\X(5)Z/7c\\t5/K@@@@@@@@b@@@@@@[ 8M8@@@A@@@A@@8@@@@@@@@@KDLt! !,-|t'(-\\!,\/,\!ZJG@@@d@Md@@@G@@@[ 49 rijen zijn geselecteerd.Note: I seem to have misunderstood the new contest. It's totally different than the first one. This only became clear to me after I tried to add my finished entry on the PL/SQL Challenge website. Oh well, it sure was fun!