当前位置: 首页 > 面试题库 >

Python:sqlite OR语句

华谭三
2023-03-14
问题内容

是否存在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 Sc​​hmidt (我想要的东西正好相反)!

我也尝试过,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对表中的每一行总是如此。

您的计算机不像您那样思考。即使fname = 'Elvis' or 'Richard'对您来说似乎很明显,RDBMS也不知道您的意思,而是显示“如果fname等于’Elvis’或…
true”。它将字符串评估为布尔值,并且我假设由于字符串不为空,因此将其评估为true。就像我前面说的,然后继续从表中选择每一行。



 类似资料:
  • 主要内容:使用 goto 退出多层循环,使用 goto 集中处理错误Go语言中 goto 语句通过标签进行代码间的无条件跳转,同时 goto 语句在快速跳出循环、避免重复退出上也有一定的帮助,使用 goto 语句能简化一些代码的实现过程。 使用 goto 退出多层循环 下面这段代码在满足条件时,需要连续退出两层循环,使用传统的编码方式如下: 代码说明如下: 第 10 行,构建外循环。 第 13 行,构建内循环。 第 16 行,当 y==2 时需要退出所有的 for

  • 主要内容:基本写法,跨越 case 的 fallthrough——兼容C语言的 case 设计Go语言的 switch 要比C语言的更加通用,表达式不需要为常量,甚至不需要为整数,case 按照从上到下的顺序进行求值,直到找到匹配的项,如果 switch 没有表达式,则对 true 进行匹配,因此,可以将 if else-if else 改写成一个 switch。 相对于C语言和 Java 等其它语言来说,Go语言中的 switch 结构使用上更加灵活,语法设计尽量以使用方便为主。 基本写

  • Go 语言循环语句 Go 语言的 goto 语句可以无条件地转移到过程中指定的行。 goto语句通常与条件语句配合使用。可用来实现条件转移, 构成循环,跳出循环体等功能。 但是,在结构化程序设计中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。 语法 goto 语法格式如下: goto label; .. . label: statement; break 语句

  • Go 语言循环语句 Go 语言的 continue 语句 有点像 break 语句。但是 continue 不是跳出循环,而是跳过当前循环执行下一次循环语句。 for 循环中,执行 continue 语句会触发for增量语句的执行。 语法 continue 语法格式如下: continue; continue 语句流程图如下: Go 语言循环语句

  • Go语言循环语句 Go 语言中 break 语句用于以下两方面: 用于循环语句中跳出循环,并开始执行循环之后的语句。 break在switch(开关语句)中在执行一条case后跳出语句的作用。 语法 break 语法格式如下: break; break 语句流程图如下: Go语言循环语句

  • Go 语言条件语句 select是Go中的一个控制结构,类似于用于通信的switch语句。每个case必须是一个通信操作,要么是发送要么是接收。 select随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。一个默认的子句应该总是可运行的。 语法 Go 编程语言中 select 语句的语法如下: select { case communication

  • Go 语言条件语句 switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上直下逐一测试,直到匹配为止。。 switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加break 语法 Go 编程语言中 switch 语句的语法如下: switch var1 { case val1: ... case val2:

  • Go 语言条件语句 if 语句由布尔表达式后紧跟一个或多个语句组成。 语法 Go 编程语言中 if 语句的语法如下: if 布尔表达式 { /* 在布尔表达式为 true 时执行 */ } If 在布尔表达式为 true 时,其后紧跟的语句块执行,如果为 false 则不执行。 流程图如下:Go 语言条件语句