书接SQL杂记_day01,继续WHERE部分内容:
6)WHERE中使用 IN:
SELECT prod_name, prod_price
FROM Products
WHERE vend_id IN ( 'DLL01', 'BRS01' )
ORDER BY prod_name;
IN的功能和OR的功能是相同的,只是阅读起来语义更加的明确,和如下代码意义相同:
SELECT prod_name, prod_price
FROM Products
WHERE vend_id = 'DLL01' OR vend_id = 'BRS01'
ORDER BY prod_name;
还有一个优点是可以在 IN 里包含其他的SELECT语句!
7)NOT:
用来否定WHERE子句内的内容
SELECT prod_name
FROM Products
WHERE NOT vend_id = 'DLL01'
ORDER BY prod_name;
通配符总结了解一下
首先要明确,通配符搜索只能用于文本字段(字符串),非文本类型数据字段不能使用!
为了在搜索中能使用通配符,则需要使用LIKE来进行操作(LIKE被称为谓词)
1、%:
用来在任意位置匹配任意数量的字符,0,1 或者更多和字符都可以
SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE 'Fish%';
SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE '%bean bag%';
关于大小写问题,是可以做到区分大小写的,当前使用的环境就是区分大小写!
注意:关于前面或者后面存在空格的出现空格问题,一般匹配时,需要去除字符串两端无用的空格,之后再进行匹配操作,例如匹配: F%y
那么如果字符串后部有很多空格,则就不是以y结尾,就无法匹配到;还有就是无法匹配NULL。
2、" _ "(在Microsoft Access中使用的是" ? ")
下划线“ _ ”通配符只能匹配一个字符
SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE '__ inch teddy bear'; (此处使用了两个下划线)
3、方括号([ ])通配符(以下规则适用于MySql):
用来匹配指定位置的一个字符
SELECT cust_contact
FROM Customers
WHERE cust_contact RLIKE '[JM]'
ORDER BY cust_contact;
匹配首字母为J或者M的字符串(也可以使用 REGEXP 或者 NOT REGEXP, 能有同样效果)
注意:切勿过度使用通配符,匹配效率不高