Aus*_*ams 2 python sql linux sqlite ubuntu
是否有OR sqlite语句?我一直试图谷歌它,但谷歌似乎过滤了OR.
例如,如果我想在此表中找到某人(人)
people:
+--fname--+--lname--+--has_squirrel--+
|Eric |Schmidt |0 |
+---------+---------+----------------+
|Elvis |Presley |1 |
+---------+---------+----------------+
|Richard |Stallman |0 |
+---------+---------+----------------+
Run Code Online (Sandbox Code Playgroud)
用Elvis或Richard的名字命名,我的疑问是什么?
我已经尝试了类似的东西select * from people where fname=('Elvis' or 'Richard'),但这总是让Eric Schmidt回归(与我想要的完全相反的行)!
我也试过select * from people where fname='Elvis' or 'Richard'但是返回表中的所有行!
我在Ubuntu 10.10上使用Python 2.6 sqlite3模块.有人能给我一个关于sqlite OR语句的快速解释,还是告诉我它是否不存在?我试过RTFM而且找不到任何东西(在sqlite网站上搜索OR会发出一堆错误!).
谢谢!
Vin*_*ard 20
它将是其中之一:
SELECT * FROM people WHERE fname IN ('Elvis', 'Richard');
SELECT * FROM people WHERE fname = 'Elvis' OR fname = 'Richard';
Run Code Online (Sandbox Code Playgroud)
我很惊讶您的第一个查询甚至可以正常工作,而在您的第二个查询中,or 'Richard'基本上意味着or 1=1,对于表中的每一行,它总是如此.
你的电脑不像你那样思考.即使你fname = 'Elvis' or 'Richard'看起来很明显,RDBMS也不知道你的意思,并且读"如果fname等于'Elvis'或...... true".它将字符串评估为布尔值,我认为因为它不是空的,所以它被评估为true.然后继续选择你桌子上的每一行,如前所述.
| 归档时间: |
|
| 查看次数: |
5226 次 |
| 最近记录: |