SQL杂记_day02

书接SQL杂记_day01,继续WHERE部分内容:

6)WHERE中使用 IN:

SELECT prod_name, prod_price

FROM Products

WHERE vend_id IN ( 'DLL01', 'BRS01' )

ORDER BY prod_name;


SQL杂记_day02_第1张图片
执行结果

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%';


SQL杂记_day02_第2张图片

关于大小写问题,是可以做到区分大小写的,当前使用的环境就是区分大小写!

注意:关于前面或者后面存在空格的出现空格问题,一般匹配时,需要去除字符串两端无用的空格,之后再进行匹配操作,例如匹配: F%y

那么如果字符串后部有很多空格,则就不是以y结尾,就无法匹配到;还有就是无法匹配NULL。

2、" _ "(在Microsoft Access中使用的是" ? ")

下划线“ _ ”通配符只能匹配一个字符

SELECT prod_id, prod_name

FROM Products

WHERE prod_name LIKE '__ inch teddy bear';  (此处使用了两个下划线)


SQL杂记_day02_第3张图片

3、方括号([ ])通配符(以下规则适用于MySql):

用来匹配指定位置的一个字符

SELECT cust_contact

FROM Customers

WHERE cust_contact RLIKE '[JM]'

ORDER BY cust_contact;

匹配首字母为J或者M的字符串(也可以使用 REGEXP 或者 NOT REGEXP, 能有同样效果)

注意:切勿过度使用通配符,匹配效率不高

你可能感兴趣的:(SQL杂记_day02)