1、like操作符
分析:
如何搜索产品名中包含文本bean bag 的所有产品?用简单的比较操作符肯定不行,必须使用通配符。利用通配符,可以创建比较特殊的搜索模式。
通配符:
用来匹配值的一部分的特殊字符。
搜索模式:
由字面值,通配符或两者组合构成的搜索条件。
搜索子句:
为了在搜索子句中使用通配符,必须使用like操作。like只是dbms,后跟的搜索模式利用通配符匹配而不是简单的相等匹配进行比较。
2、百分号(%) 通配符
最常用的通配符,在搜索串中,%表示任何字符出现任意次数
#找出所有以词Fish起头的产品
SELECT prod_id , prod_name
FROM products
WHERE prod_name LIKE 'fish%' ;
注意:
1、如果使用的是Microsoft Access,需要使用* 而不是%
2、根据DBMS的不同及其配置,搜索可以是区分大小写的,如果区分大小写,那么‘fish%’于Fish bean bag toy 就不匹配。
3、包括Acess在内的许多DBMS都用空格来填补字段的内容。例如,如果某列有50个字符,而存储的文本为Fish bean tag toy(17个字符),则为补填该列需要在文本后附加33个空格。这样做一般对数据及其使用没有影响,但是对可能对上述SQL语句有负面影响。子句WHERE prod_name LIKE 'F%y’只匹配以F开头,以y结尾的prod_name。如果值后面跟空格,既不是以y结尾,所以Fish bean bag toy 就不会检索出来。简单的解决方法是给搜索模式在增加一个%号:'F%y%'还匹配y之后的字符(或空格)。更好的解决办法就是用函数去掉空格。
4、通配符%看起来可以匹配任何东西,但又一个例外,这就是NULL。
3、下划线(_)通配符
只匹配单个字符,而不是多个。
注意:
1、DM2不支持通配符。
2、如果使用的是Microsoft Access,需要使用?而不是_。
4、方括号([])通配符
用来指定一个字符集,他必须匹配指定位置的一个字符。
#找出所有名字以j或者m开头的联系人
select cust_contact
from customers
where cust_contact like '[jm]%'
order by cust_cintact ;
注意:
1、只有微软的Access和SQL Server支持集合。
5、使用通配符的技巧
通配符搜索一般比前面讨论的其他搜索要耗费更长的处理时间。
注意:
1、不要过度的使用通配符,如果可以使用其他操作符能达到目的,应该使用其他操作符。
2、尽量不要把他放在搜索模式的开始处。
3、注意通配符的位置,如果放错位置,可能不会返回想要的数据。