龙纹身女孩和 SQL - 开源中国社区
龙纹身女孩和 SQL
oschina 2012年06月07日

龙纹身女孩和 SQL

oschina oschina 发布于2012年06月07日 收藏 28 评论 68

有免费的MySQL,为什么还要买? >>>  

我喜欢大卫·芬奇(David Fincher)拍的电影《龙纹身女孩》,他成功的把小说《龙纹身女孩》搬上了荧幕,超出了我的预期。我本以为这又是一部肤浅的、愤世嫉俗的用来敛钱的好莱坞电影,事实情况却是,这是一部情节紧张,能引起共鸣的电影,只是里面的淫杀犯罪让人毛骨悚然。我最喜欢的一个情节是龙纹身女孩用SQL来查找40年前的凶杀案的过程。

龙纹身女孩

我们从电影里可以看到她使用笔记本电脑,轻而易举的进入瑞典警察局数据库,当她敲入像‘unsolved(未破案)’和‘decapitation(斩首)’等关键词时,屏幕上翻滚着绿色的检索出的信息,虽然我们看不清她使用的完整的查询语句:

sql2sql2

处于一种天生的好奇,我忍不住截取了这些镜头画面,用Photoshop拼接了一下,下面是我得到的结果:

完整sql

你马上能发现,这不是Oracle SQL——很显然 AS 关键字在Oracle里不能用在表假名上。事实上,如果我们回去看看她那个令人兴奋的查询结果输出时,你会看到 mysql 的提示符,而且还有 use [dbname] 连接数据库的语法,下面是一个更详细的画面:

全屏显示

我们实际上可以把她用的left join关键词表的SQL语句整理出来。

最终我们获得了一个全屏的输出结果信息:

详细输出图

下面就是我们Oracle“WTF研究会”部门重新构造出的她使用的SQL:

SELECT DISTINCT v.fname, v.lname, i.year, i.location, i.report_file
FROM   Incident AS i
       LEFT JOIN V(ictim?)...  -- presumably v.incident_id = i.id
       LEFT JOIN Keyword AS k ON k.incident_id = i.id
WHERE  i.year BETWEEN 1947 AND 1966
AND    i.type = 'HOMICIDE'
AND    v.sex = 'F'
AND    i.status = 'UNSOLVED'
AND    ...
       OR v.fname IN ('Mari', 'Magda')
       OR SUBSTR ...
AND    (k.keyword IN ('rape', 'decapitation', 'dismemberment', 'fire', 'altar', 'priest', 'prostitute')
       ...
       AND SUBSTR(v.fname, 1, 1) = 'R' AND SUBSTR(v.lname, 1, 1) = 'L');

+--------+---------+------+-----------+----------------------------------+
| fname  | name    | year | location  | report_file                      |
+--------+---------+------+-----------+----------------------------------+
| Anna   | Wedin   | 1956 | Mark      | FULL POLICE REPORT NOT DIGITIZED |
| Linda  | Janson  | 1955 | Mariestad | FULL POLICE REPORT NOT DIGITIZED |
| Simone | Grau    | 1958 | Goteborg  | FULL POLICE REPORT NOT DIGITIZED |
| Lea    | Persson | 1962 | Uddevalla | FULL POLICE REPORT NOT DIGITIZED |
| Kajsa  | Severin | 1962 | Dals-Ed   | FULL POLICE REPORT NOT DIGITIZED |
+--------+---------+------+-----------+----------------------------------+

你也许会很惊讶,很奇怪,这样一个顶级的黑客为什么要outer-join的方式连接Victims(被害人)表和Keywords(关键词)表呢,还使用这样的文字过滤方式,岂不知MySQL里是有 like 语法的,更奇怪的是输出结果里根本没有姓和名分别以’R L’打头的受害人。

[本文英文原文链接:The Girl With The ANSI Tattoo ]

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:龙纹身女孩和 SQL
分享
评论(68)
最新评论
0
OSC一堆啥都不懂的蠢蛋,作者明明没说电影有Bug,只是谈了点MySQL语句Oracle语句,怎么一群人冒出来说电影有BUg,还非要把这个看法强加到文章作者身上。

蠢货,一群。
0
电影而已,何必以找Bug的心态去看?
0
这作者大大真是闲的蛋疼啊
0

引用来自“冷月孤寒”的评论

引用来自“mallon”的评论

电影拍成这样已经很不错了,貌似以前有中国电影用BIOS设置界面冒充的

中国绝大部分电影都很弱智

想起了看棒子的城市猎人,拿个192.168.x.x的看了下说是这里的IP。。。
0
还是敲01010101吧
0
曾有部电影里面入侵的代码竟然是xHTML,里面清清楚楚的div,br等标签 。
0
真是一个牛人啊,我敬佩你,真的。
0

引用来自“WaiTing”的评论

程序员真的是太可怕了。

+1
0
太有才了。
0
真相帝!
0
有心人!!!
0
我觉得这个至少比《我是业主》里面的要真。
里面的李大辉是软件开发项目经理,写程序时既然用的Excel!!,而且里面大量出现了wetrjgkdfljtgertjkdfklgj这种代码,不知道他是学的什么开发语言,有点惊讶。
0
OSC以后转载文章能署名翻译者
和原文链接吗?
这是对他人劳动果实的起码尊重啊!!!
这么多人居然每一个提出这问题的
太令人失望了
0

引用来自“mallon”的评论

电影拍成这样已经很不错了,貌似以前有中国电影用BIOS设置界面冒充的

我还看过用DIR的。
0

引用来自“WaiTing”的评论

程序员真的是太可怕了。

啊哈哈哈。
太有趣了
0
貌似以前还有在Word里编程的呢。
0
晚上去看看这电影
0
mysql 亮了
0
是翻译国外的网文吧,WTF研究会 ? What the fuck?
0
COOL
顶部