组合WHERE子句
使用IN运算符
NOT运算符
实现模糊查询
本章将介绍如何使用WHERE子句设置更高级的查询条件。例如,查询计算机系的
所有女生;查询中文系或者外语系的所有男生等。此外,还将介绍使用IN、NOT、LIKE
3个运算符和使用通配符进行模糊查询的方法。
高级条件查询
第章
SQL技术与网络数据库开发详解
·94·
8.1组合WHERE子句
本节将教会读者使用AND和OR运算符设置高级查询条件的具体方法。AND和OR两个运算符
可以将单独的条件表达式组合在一起,形成复杂、强大的搜索条件表达式。这种表达式将会满足用户
很多的查询需求。
8.1.1AND运算符
如前所述,AND运算符只有当两边操作数均为True时,最后结果才为True。根据AND的这种运
算规则,人们使用AND描述“与”(而且)的关系,即既满足第一个条件且满足第二个条件时才会通
过审核。下面的几个例题使用AND完成了一些复杂的查询任务。
【例8.1】从Student表中查询计算机系的所有女生,并将结果按学号升序排序。
分析:使用前面所学的知识,只能完成查询计算机系的所有学生或者查询所有女生,而并不能完成查
询不但是计算机系的学生,而且还是女生的任务。这就需要组合这两个条件,因为这两个条件
是“而且”的关系,所以使用AND运算符连接。具体的SELECT语句如下。
SELECT
FROMstudent
WHERE所属院系=''计算机系''
AND性别=''女''
ORDERBY学号
运行结果如图8.1所示。
图8.1例8.1运行结果
图8.1中只有两条记录,这两条记录既满足了是计算机系的学生,又满足了是女生的条件。
【例8.2】从Student表中查询1975年出生的所有学生,并将结果按出生日期升序排序。
(1)如果SQL运行环境为Access,则因为日期型数据中没有时间,可以使用如下SELECT语句
查询。
SELECT
FROMstudent
WHERE出生日期>=#01/01/1975#
AND出生日期<=#12/31/1975#
ORDERBY出生日期
(2)如果SQL运行环境为SQLServer,则因为日期型数据中有时间,所以应当使用如下SELECT
语句查询。
SELECT
第8章高级条件查询
·95·
FROMstudent
WHERE出生日期>=''01/01/1975''
AND出生日期<''01/01/1976''
ORDERBY出生日期
(3)如果SQL运行环境为Oracle,也因为日期型数据中有时间,所以应当使用如下SELECT语
句查询。
SELECT
FROMstudent
WHERE出生日期>=''01/JAN/1975''
AND出生日期<''01/JAN/1976''
ORDERBY出生日期
本例运行结果如图8.2所示。
图8.2例8.2运行结果
上面两个例题的搜索条件中只用了一个AND运算符,实际上根据需要可以使用多个AND组合条
件,例如下面的例题。
【例8.3】从Student表中查询1975年出生的所有女生,并将结果按出生日期升序排序。假设SQL
运行环境为SQLServer。
SELECT
FROMstudent
WHERE出生日期>=''01/01/1975''
AND出生日期<''01/01/1976''
AND性别=''女''
ORDERBY出生日期
运行结果如图8.3所示。
图8.3例8.3运行结果
8.1.2OR运算符
OR运算符只有当两边操作数均为False时,最后结果才为False,只要一边是True,则最后结果为
True。根据OR的这种运算规则,人们使用OR运算符描述“或”(或者)的关系,即当满足任何一个
条件就可以通过审核。下面的几个例题使用OR运算符完成了一些复杂的查询任务。
【例8.4】从Student表中查询中文系的所有学生和外语系的所有学生,并将结果按学号升序排序。
分析:本题两个条件的关系其实是“或”,因为满足任何一个条件就可以通过审核。
SELECT
FROMstudent
SQL技术与网络数据库开发详解
·96·
WHERE所属院系=''中文系''
OR所属院系=''外语系''
ORDERBY学号
运行结果如图8.4所示。
图8.4例8.4运行结果
查询结果中既包含了中文系的所有学生,又包含了外语系的所有学生。这是因为中文系的学生满
足表达式:
所属院系=''中文系''
即为True,所以整个条件表达式:
所属院系=''中文系''OR所属院系=''外语系''
变成了
TrueORFalse
根据OR的运算规则,最终条件表达式的值为True,所以所有中文系的学生都进入了查询结果集
中。同理,所有外语系的学生也都进入了查询结果集,而其他院系的学生都被筛选掉了。
8.1.3AND与OR的优先顺序问题
WHERE子句中可以包含任意数量的AND和OR运算符,并且允许两者结合使用。下面的例题组
合了AND和OR两个运算符,解决了一个查询任务。
【例8.5】从Student表中查询中文系和外语系的所有女生。
分析:前面已经介绍了查询中文系和外语系的学生需要使用OR运算符,又因为要查询这两个系的女
生,所以还得使用AND运算符。编写如下的SELECT语句。
SELECT
FROMstudent
WHERE所属院系=''中文系''
OR所属院系=''外语系''
AND性别=''女''
ORDERBY学号
运行结果如图8.5所示。
图8.5例8.5运行结果1
第8章高级条件查询
·97·
查看运行结果后会发现一个男生进入了查询结果集中,导致这一错误的根源是运算符的优先级问
题。在表达式中,如果同时出现了AND和OR两种运算符,则并非从左到右按顺序运算,而是优先执
行AND,然后执行OR运算符。
了解了运算符的优先级后,上面错误的原因就很容易地找到了。因为上面的条件表达式与下面的
表达式等价。
所属院系=''中文系''OR(所属院系=''外语系''AND性别=''女'')
而该表达式的意思是:中文系的所有学生和外语系的所有女生,因此,查询结果集中出现了中文
系的男生。为了让OR运算符优先执行,可以使用括号,下面的SELECT语句是正确的查询语句。
SELECT
FROMstudent
WHERE(所属院系=''中文系''OR所属院系=''外语系'')
AND性别=''女''
ORDERBY学号
技巧:在有多种运算符的组合条件表达式中,尽量使用括号,即使计算机可能不需要这些括号,但这
样会方便人们阅读和理解复杂的条件表达式,同时也会减小出错的概率。
运行结果如图8.6所示。
图8.6例8.5运行结果2
8.2使用IN运算符
在查询中,有时会遇到这样一种查询任务——指定的字段值只要属于某个集合,就将该记录查询
出来。此时,会用到IN运算符。
8.2.1使用IN运算符
IN运算符的运算规则是:当X在集合{Value1,Value2,……ValueN}中时,表达式
XIN(Value1,Value2,……ValueN)
为True,而X不在集合{Value1,Value2,……ValueN}中时,上面的表达式为False。例如:
8IN(2,5,8,13)
因为8在集合{2,5,8,13}中,所以表达式的值为True。对于
7IN(2,5,8,13)
因为7不在集合{2,5,8,13}中,所以表达式的值为False。下面通过一个例题感受一下使用IN
SQL技术与网络数据库开发详解
·98·
运算符查询数据的方法。
【例8.6】从Course表中查询学分为2、3、4的课程的信息,并按学分降序,课号升序排序。
SELECT
FROMcourse
WHERE学分IN(2,3,4)
ORDERBY学分DESC,课号
运行结果如图8.7所示。
图8.7例8.6运行结果
说明:在IN运算符表达式中,集合必须用圆括号括住,并且各元素之间用逗号(,)分隔。
本例演示了使用IN运算符查询数值型数据的方法,下面再看一个使用IN运算符查询字符型数据
的例题。
【例8.7】从Student表中查询中文系、外语系和计算机系的所有学生,并按院系降序排列。
SELECT
FROMstudent
WHERE所属院系IN(''中文系'',''外语系'',''计算机系'')
ORDERBY所属院系DESC
运行结果如图8.8所示。
图8.8例8.7运行结果
IN运算符还有一个反向运算符——NOTIN。下面的例题使用NOTIN运算符解决了一个查询任务。
【例8.8】从Student表中,查询除中文系、外语系和计算机系以外的其他系的学生,并按院系降
序排列。
SELECT
FROMstudent
WHERE所属院系NOTIN(''中文系'',''外语系'',''计算机系'')
ORDERBY所属院系DESC
运行结果如图8.9所示。
第8章高级条件查询
·99·
图8.9例8.8运行结果
8.2.2使用IN运算符的优点
通过前面几个例题的学习,读者一定会感觉到IN运算符和OR运算符实现的功能是相同的。那么
为什么使用IN运算符呢?因为IN运算符有如下优点。
null当条件很多时,使用IN运算符会使语句更加简洁、清楚。例如,如果将例题8.7,使用OR运
算符改写则其语句为:
SELECT
FROMstudent
WHERE所属院系=''中文系''
OR所属院系=''外语系''
OR所属院系=''计算机系''
ORDERBY所属院系DESC
很明显,此时使用IN运算符会比OR运算符简洁、清楚得多。
nullIN运算符的执行速度要比OR运算符更快。
nullIN运算符最大的优点是:其后条件列表集合中,可以放置其他SELECT语句,即子查询。下
面通过一个例题体现该优点。
【例8.9】从Score表中,查询所有学生的“心理学”的考试成绩和平时成绩,并按考试成绩降序
排列,当考试成绩相同时按平时成绩降序排列。
分析:因为Score表中没有课名只有课号,因此,必须从Course表中找到“心理学”的课号,然后根
据这一课号从Score表中查询考试成绩和平时成绩。
SELECT学号,考试成绩,平时成绩
FROMscore
WHERE课号IN(SELECT课号
FROMcourse
WHERE课名=''心理学'')
ORDERBY考试成绩DESC,平时成绩DESC
运行结果如图8.10所示。
图8.10例8.9运行结果
SQL技术与网络数据库开发详解
·100·
SELECT语句中,子查询
SELECT课号
FROMcourse
WHERE课名=''心理学
的查询结果是“心理学”的课号,如果将其单独运行,则结果如图8.11所示。
图8.11子查询运行结果
因此,整个SELECT语句就会变成如下形式。
SELECT学号,考试成绩,平时成绩
FROMscore
WHERE课号IN(‘002’)
ORDERBY考试成绩DESC,平时成绩DESC
所以,本例的SELECT语句查出了所有学生的“心理学”的考试成绩和平时成绩。关于子查询的
详细内容可查看本书后面的内容。
8.3NOT运算符
NOT运算符的作用是对其后的表达式求反。下面通过两个例题介绍NOT运算符的使用方法。
【例8.10】从Student表中查询来源地不是北京市和广东省的所有学生。
SELECT
FROMstudent
WHERENOT(来源地=''北京市''OR来源地=''广东省'')
运行结果如图8.12所示。
图8.12例8.10运行结果
如果本例中不使用NOT运算符,而采用不等于(<>)运算符,则大多数初学者可能会编写如下
的SELECT语句。
SELECT
FROMstudent
WHERE来源地<>''北京市''
OR来源地<>''广东省''
第8章高级条件查询
·101·
运行结果如图8.13所示。
图8.13使用“<>”运算符得到的运行结果1
从图8.13中可以看到,结果集中包含了北京市和广东省的学生,因为当指针指向广东省的学生时,
表达式
来源地<>''北京市’
的值为True,根据OR运算符的规则,整个表达式的值也为True,所以广东省的学生被包含进了结果
集,因为类似的原因,北京市的学生也被包含进了结果集中。所以,上面使用不等于运算符的SELECT
语句是错误的,下面的语句才是正确语句。
SELECT
FROMstudent
WHERE来源地<>''北京市''
AND来源地<>''广东省''
运行结果如图8.14所示。
图8.14使用“<>”运算符得到的运行结果2
NOT运算符不仅可以对表达式求反,还可以和一些特殊运算符结合使用,例如前面介绍的ISNOT
NULL、NOTBETWEEN和NOTIN等就是结合使用的例子。下面演示NOTBETWEEN的用法。
【例8.11】从Student表中,查询出生日期不在1978—1980年之间(包含1978和1980年)的所
有学生。
(1)假设SQL运行环境为SQLServer,则其SELECT语句如下所示。
SELECT
FROMstudent
WHERE出生日期NOTBETWEEN''01/01/1978''AND''12/31/1980''
运行结果如图8.15所示。
SQL技术与网络数据库开发详解
·102·
图8.15例8.11运行结果
说明:在本书中,因为出生日期的时间部分都为0,所以上面的查询能够正确运行。如果时间部分不为
0,则应当编写另外的语句查询,下面列出一种具体的方法,其中,DATEPART函数的相关内
容可查看本书函数部分的内容。
SELECT
FROMstudent
WHEREDATEPART(YY,出生日期)NOTBETWEEN1978AND1980
(2)假设SQL运行环境为Access,则其SELECT语句如下所示。
SELECT
FROMstudent
WHERE出生日期NOTBETWEEN#01/01/1978#AND#12/31/1980#
(3)假设SQL运行环境为Oracle,则其SELECT语句如下所示。
SELECT
FROMstudent
WHERE出生日期NOTBETWEEN''01/JAN/1978''AND''31/DEC/1980''
注意:在设置查询条件时,应尽量避免使用否定条件,例如NOTBETWEEN、NOTIN等,因为有些
DBMS不能优化这些条件查询。
8.4实现模糊查询
有时只知道需要查询内容的一部分,例如,只知道某学生姓名中含有“三”字,而并不清楚完整
姓名是什么,此时如果想要查询该学生的信息,用前面所学的内容是很难做到的,使用通配符和LIKE
运算符可以解决这类问题。本节将介绍LIKE运算符和几种通配符的使用方法。
8.4.1LIKE运算符
结合使用LIKE运算符和通配符可以对表进行模糊查询,即仅仅使用查询内容的一部分查询数据
库中存储的数据。当然,LIKE运算符也可以单独使用,单独使用时,其功能与等于运算符(=)相同。
不过,需要注意的是LIKE运算符只支持字符型数据。下面的例题演示了LIKE运算符的使用方法,因
为没有使用通配符,实际上没有什么太大意义,只是演示了使用方法而已。
【例8.12】从Student表中查询中文系所有学生的信息,并按学号升序排序。
SELECT
FROMstudent
第8章高级条件查询
·103·
WHERE所属院系LIKE''中文系''
ORDERBY学号
运行结果如图8.16所示。
图8.16例8.12运行结果
LIKE运算符也可以和NOT结合使用,例如,下面的例题演示了NOTLIKE的用法。
【例8.13】从Student表中查询不是中文系的学生的信息,并按所属院系升序排序。
SELECT
FROMstudent
WHERE所属院系NOTLIKE''中文系''
ORDERBY所属院系
运行结果如图8.17所示。
图8.17例8.13运行结果
本例中NOTLIKE的功能和不等于(<>)运算符相同。
8.4.2“%”通配符
在SQL语言中,使用百分号(%)通配符代表0个或多个字符。下面列出了几个典型的例子供读
者参考,如表8.1所示。
表8.1百分号(%)通配符举例
百分号(%)通配符举例说明匹配字符串举例
a%代表头字母为“a”的所有字符串“a”、“abc”、“amermenduu?”等
%NBA%代表含有“NBA”的所有字符串
“NBA篮球明星”、“进入NBA的姚明”、
“巴特尔与NBA”等
%nm代表最后两个字母为“nm”的所有字符串“nm”、“123nm”
A%Z
代表头字母为“A”,最后一个字母为“Z”
的所有字符串
“AZ”、“ABCDZ”、“A1212DFAFZ”等
%1983%
代表含有1983的字符串或者日期时间型
数据
“生于1983年”、03/20/1983
说明:如果SQL运行环境为Access,则使用星号()通配符代替百分号(%)通配符。
SQL技术与网络数据库开发详解
·104·
下面的例题演示了结合使用“%”和LIKE运算符,实现模糊查询功能的具体方法。
【例8.14】从Student表中,查询所有姓名中包含“三”字的学生信息。
SELECT
FROMstudent
WHERE姓名LIKE''%三%''
运行结果如图8.18所示。
图8.18例8.14运行结果1
为了更好地体现本例效果,下面在数据表中插入两条新记录,插入语句如下。
INSERTINTOstudent(学号,
姓名,
性别,
出生日期)
VALUES(''0011'',
''周三丰'',
''男'',
''12/20/1981'')
INSERTINTOstudent(学号,
姓名,
性别,
出生日期)
VALUES(''0012'',
''三宝'',
''男'',
''05/15/1983'')
执行下面的查询,查看插入结果。
SELECT
FROMstudent
运行结果如图8.19所示。
图8.19插入新记录后的Student表
再次运行下面的查询语句。
第8章高级条件查询
·105·
SELECT
FROMstudent
WHERE姓名LIKE''%三%''
运行结果如图8.20所示。
图8.20例8.14运行结果2
从图中可以看到结果集中包含了所有姓名中含有“三”字的学生。如果将“%三%”中的第一个“%”
去掉,则查询结果会是什么呢?下面做一个实验,将上面的查询语句改为如下的语句并运行。
SELECT
FROMstudent
WHERE姓名LIKE''三%''
运行结果如图8.21所示。
图8.21例8.14运行结果3
这次的运行结果中只包含了一条记录,因为字符串“三%”只代表头一个字为“三”的所有字符
串。如果将查询语句改为下面的语句:
SELECT
FROMstudent
WHERE姓名LIKE''%三''
则只能查询最后一个字为“三”的所有学生。其运行结果如图8.22所示。
图8.22例8.14运行结果4
8.4.3使用“%”通配符查询日期型数据
有时,使用“%”通配符查询日期时间型数据会很方便,例如,查询1983年出生的所有学生、查
询9月份出生的所有学生等。下面通过几个例题介绍查询日期时间型数据的具体方法。
【例8.15】从Student表中,查询出生于1980年的所有学生。
SELECT
FROMstudent
WHERE出生日期LIKE''%1980%''
运行结果如图8.23所示。
SQL技术与网络数据库开发详解
·106·
图8.23例8.15运行结果
注意:本例中的“%1980%”不可以写为“1980%”或“%1980”。
【例8.16】从Student表中,查询出生于9月份的所有学生。
SELECT
FROMstudent
WHERE出生日期LIKE''09%''
运行结果如图8.24所示。
图8.24例8.16运行结果
【例8.17】从Student表中,查询出生于1975年9月份的所有学生。
SELECT
FROMstudent
WHERE出生日期LIKE''09%1975%''
运行结果如图8.25所示。
图8.25例8.17运行结果
虽然使用“%”通配符查询年份和月份比较方便,但是查询日却并不理想。例如,查询每个月1
日出生的所有学生。此时,使用“%”通配符则不会得到理想的结果。
8.4.4“_”通配符
“%”通配符可以代表0个或多个字符,但是它不能代表指定个数的字符。例如,需要查询姓“周”,
且名字由两个字组成的所有学生。如果使用“%”,则只能查询所有姓“周”的学生,但不能确定名
字只有两个字。例如,下面的SELECT语句。
SELECT
FROMstudent
WHERE姓名LIKE''周%''
运行结果如图8.26所示。
图8.26所有姓“周”的学生
第8章高级条件查询
·107·
因为上述原因出现了下划线(_)通配符,它只代表任意一个字符(包括0个字符)。例如,
“周_”代表以“周”字开头的,最多由两个汉字组成的字符串。
说明:如果SQL运行环境为Access,则使用问号(?)通配符代替下划线(_)通配符。
【例8.18】从Student表中,查询姓“周”,而且名字最多由3个字组成的学生。
SELECT
FROMstudent
WHERE姓名LIKE''周__''
注意:“周”后有两个“_”通配符。
运行结果如图8.27所示。
图8.27例8.18运行结果
【例8.19】从Student表中,查询姓“周”,而且名字必须是3个字的学生。
SELECT
FROMstudent
WHERE姓名LIKE''周__''
AND姓名NOTLIKE''周__''
注意:第一个“周”后有两个“_”通配符,第二个“周”后有一个“_”通配符。
运行结果如图8.28所示。
图8.28例8.19运行结果
“_”通配符也可以不与字符组合,而单独使用。
【例8.20】从Student表中,查询名字最多由两个字组成的所有学生。
SELECT
FROMstudent
WHERE姓名LIKE''__''
运行结果如图8.29所示。
图8.29例8.20运行结果
SQL技术与网络数据库开发详解
·108·
8.4.5“[]”通配符
如果SQL运行环境为SQLServer、Access或SybaseAdaptiveServer,则可以在LIKE运算符中使
用一种特殊的通配符——方括号([])。表8.2列出了方括号通配符的一些例子和说明。
表8.2方括号通配符举例
举例说明
[NR]%代表以“N”或“R”字母开头的所有字符串
[a-d]%ing代表以“a”、“b”、“c”、“d”字母开头,以“ing”结尾的所有字符串
[c-emn]%代表以“c”、“d”、“e”、“m”和“n”字母开头的所有字符串
N[^B]%代表以“N”字母开头,并且第二个字母不是“B”的所有字符串
%197[5-9]%代表1975—1979等5个数字
[1][012]%代表10、11、12等3个数字
下面是两个使用方括号通配符查询数据的例题。
【例8.21】从Student表中,查询姓“张”、“李”或“周”的所有学生,并按姓名升序排序。
SELECT
FROMstudent
WHERE姓名LIKE''[张李周]%''
ORDERBY姓名
运行结果如图8.30所示。
图8.30例8.21运行结果
查询结果集中,包含了所有的姓“张”、“李”、“周”的学生。如果在方括号内的第一个位置
输入符号“^”,则表示取反向值。下面看一个取反向值的例题。
【例8.22】从Student表中,查询除姓“张”、“李”或“周”以外的所有学生,并按姓名升序排序。
SELECT
FROMstudent
WHERE姓名LIKE''[^张李周]%''
ORDERBY姓名
运行结果如图8.31所示。
图8.31例8.22运行结果
第8章高级条件查询
·109·
【例8.23】从Student表中,查询1—5月份出生的所有学生,并按出生日期升序排序。
SELECT
FROMstudent
WHERE出生日期LIKE''[0][1-5]%''
ORDERBY出生日期
运行结果如图8.32所示。
图8.32例8.23运行结果
说明:如果SQL运行环境为Access,则使用感叹号(!)代替(^)。例如,集合否定[^张李周]应当写
为[!张李周]。
8.4.6SQLServer、Access和Oracle中的通配符比较
SQLServer、Access和Oracle中使用的通配符有些是不一样的。SQLServer和Access中允许使用
的通配符要多于Oracle。表8.3对这3个DBMS中能够使用的通配符进行了汇总和比较。
表8.3通配符比较
SQLServerAccessOracle说明
百分号(%)星号()百分号(%)代表0个或多个任意字符
下划线(_)问号(?)下划线(_)代表一个任意字符
(无)井号(#)(无)代表一个数字字符
方括号([])方括号([])(无)代表指定的范围
反方括号([^])反方括号([!])(无)代表指定的范围之外
虽然Oracle中没有方括号和反方括号,但有时可以使用逻辑表达式得到相同的效果。例如:
字段名LIKE[a-z]%
或
字段名LIKE[^a-z]%
可以使用逻辑表达式
字段名>=''a''AND字段名<=''z''
或
字段名<=''a''OR字段名>=''z''
得到相同的效果。
8.4.7定义转义字符
前面学习了几种通配符的使用方法,知道了“%5%”代表包含5的所有字符串,如果想要查询最
SQL技术与网络数据库开发详解
·110·
后两个字符为5%的所有字符串呢?即将“%5%”中第二个“%”看作普通字符,而不是通配符,此时
应该定义和使用转义字符。在不同的环境下,定义转义字符的方法也不同。下面学习定义转义字符的
具体方法。
1.SQLServer环境
如果运行环境为SQLServer,则使用ESCAPE关键字定义转义字符。例如,要查询最后两个字符
为百分之五(5%)的所有字符串,其LIKE语句为:
LIKE''%5#%''ESCAPE''#''
其中,
ESCAPE''#''
定义了转义字符“#”,它表示紧跟着“#”后的“%”为普通字符,而并非是通配符。
注意:只有紧跟在转义字符后面的通配符才被看作为转义字符,例如,如果上面的LIKE语句为:
LIKE''%5#%%''ESCAPE''#''
则表示要查询的是包含百分之五(5%)的所有字符串。这里最后一个“%”仍当作通配符来使
用,只有紧跟着“#”的“%”(第二个)才被当作普通字符。
2.Access环境
如果运行环境为Access,则使用方括号([])定义转义字符,将需要看作普通字符的通配符,放入
方括号内即可。例如,要查询包含问号(?)的所有字符串,则在Access中编写LIKE语句为:
LIKE''[?]''
说明:Access中,将问号(?)当作通配符,与前面介绍的下划线(_)通配符的效果相同。
又例如,要查询所有包含“C#”的字符串,则其LIKE语句为:
LIKE''C[#]''
说明:Access中,将井号(#)也当作通配符,它代表一个数字字符。
3.Oracle环境
如果运行环境为Oracle,则使用反斜杠(\)作为转义字符。要查询最后两个字符为百分之五(5%)
的所有字符串,在Oracle中,编写其LIKE语句为:
LIKE''%5\%''
此时需要注意,反斜杠作为转义字符时应当先将其激活。激活的方法为在SQLPlus中使用如下
命令:
setescape\;
定义了转义字符后,要查询所有包含“SQBT_999”的字符串,则其LIKE语句为:
LIKE''%SQBT\_999%''
|
|