是否存在OR sqlite语句?我一直在尝试使用google,但是google似乎正在过滤掉 OR 。
例如,如果我想在此表中找到某人(人)
people: +--fname--+--lname--+--has_squirrel--+ |Eric |Schmidt |0 | +---------+---------+----------------+ |Elvis |Presley |1 | +---------+---------+----------------+ |Richard |Stallman |0 | +---------+---------+----------------+
如果名字叫猫王或理查德,我的查询是什么?
我已经尝试过类似的东西select * from people where fname=('Elvis' or 'Richard'),但是总是返回 Eric Schmidt (我想要的东西正好相反)!
select * from people where fname=('Elvis' or 'Richard')
我也尝试过,select * from people where fname='Elvis' or 'Richard'但是返回表中的 所有 行!
select * from people where fname='Elvis' or 'Richard'
我正在Ubuntu 10.10上使用Python 2.6 sqlite3模块。有人可以给我关于sqlite或statement的快速解释,还是告诉我它是否不存在?我尝试进行RTFM,却找不到任何东西(在sqlite网站上搜索 OR会 吐出很多错误!)。
谢谢!
那将是其中之一:
SELECT * FROM people WHERE fname IN ('Elvis', 'Richard'); SELECT * FROM people WHERE fname = 'Elvis' OR fname = 'Richard';
我很惊讶您的第一个查询甚至可以工作,而在您的第二个查询中,or 'Richard'基本上意味着or 1=1对表中的每一行总是如此。
or 'Richard'
or 1=1
您的计算机不像您那样思考。即使fname = 'Elvis' or 'Richard'对您来说似乎很明显,RDBMS也不知道您的意思,而是显示“如果fname等于’Elvis’或… true”。它将字符串评估为布尔值,并且我假设由于字符串不为空,因此将其评估为true。就像我前面说的,然后继续从表中选择每一行。
fname = 'Elvis' or 'Richard'