6.5.4 “[]”通配符
“[]”通配符用于指定一系列的字符,只要满足这些字符其中之一,且位置出现在“[]”通配符的位置的字符串就满足查询条件。
当然,各种通配符也可以组合使用。组合使用各种通配符时,一定要弄清其表示的匹配条件。如“LIKE '5[%]'”,其中“[]”通配符内的“%”就不能理解为“%”通配符,而只是表示“%”字符。为了使读者便于理解,表6-5列出了几种查询条件及其匹配条件。
表6-5 组合通配符及其匹配条件
查 询 条 件 | 匹 配 条 件 |
LIKE '5[%]' | 5% |
LIKE '[_]n' | _n |
LIKE '[a-cdf]' | a,b, c,d或f |
LIKE '[-acdf]' | -, a, c, d 或 f |
LIKE '[ [ ]' | [ |
LIKE ']' | ] |
LIKE 'abc[_]d%' | abc_d 或 abc_d…… |
LIKE 'abc[def]' | abcd, abce, 或abcf |
实例21 使用“[]”通配符查询所有以“计”或者“生”字开头的课程
在COURSE表中查询所有以“计”或者“生”字开头的所有课程的课程名(CNAME)、人数(SCOUNT)以及考试时间(CTEST)信息。实例代码:
SELECT CNAME, SCOUNT, CTEST FROM COURSE WHERE CNAME LIKE '[计生]%' ORDER BY CNAME |
运行结果如图6.24所示。
图6.24 所有以“计”或者“生”字开头的课程名 |
在“[]”通配符内列出的字符前加符号“^”,就表示否定的意思。
实例22 使用“[]”通配符查询所有不以“计”或者“生”字开头的课程名
在COURSE表中查询所有不以“计”或者“生”字开头的所有课程的课程名(CNAME)、人数(SCOUNT)以及考试时间(CTEST)信息。实例代码:
SELECT CNAME, SCOUNT, CTEST FROM COURSE WHERE CNAME LIKE '[^计生]%' ORDER BY CNAME |
运行结果如图6.25所示。
图6.25 所有不以“计”或者“生”字开头的课程名 |
当然采用NOT运算符也可以得到相同的结果,此时SQL代码如下。
SELECT CNAME, SCOUNT, CTEST FROM COURSE WHERE NOT CNAME LIKE '[计生]%' ORDER BY CNAME |
运行结果如图6.26所示。
图6.26 所有不以“计”或者“生”字开头的课程名 |