一、用通配符进行过滤
No.1小结:
①show 产看数据
②检索:select、distinct、Limit
③排序:order by、dec、asc
④过滤:where(包括一些字句)、and、or、not、in
A:
- 什么是通配符?
- 如何使用?
- 如何使用like操作符进行通配搜索对数据进行过滤?
1、LIKE操作符
前面已经提到过通配符“*”,从一个表中显示所有的列信息。
前面讲的过滤where中的字句都是检查某个范围等,这些值都是已知的,那怎么搜索位置的信息呢?
当然也是用到where作为条件进行过滤,like像什么样的东西进行过滤。
(1)百分号通配符(%)
'jet%'为搜索模式:表示检索任意以jet起头的词。
‘%anvil%’:表示任何位置出现anvil的位置。
‘s%e’:以s起头以e结尾的所有产品。
(2)下划线(_)通配符
其作用与%一样,不同之处是_匹配的是一个字符,而%可以是多个
例子:
上面两个图就说明了不同之处,使用%检索出.5(这是两个字符),而_只检索出1或2(这是一个字符)
二、用正则表达式进行搜索
也是讲的数据过滤,对比前面过滤用的匹配、比较、通配符。为解决条件苛刻,where复杂性增加,引入正则表达式。
正则表达式(模式)作用:匹配文本
将like变为regexp
正则表达式:.000
.表示可以检索的任意一个字符,例如上面的’JetPack 1000’中,检索的.为1,在中间。
注意:正则表达式不区分大小写,需要区分在regexp后面加上BINARY
(2)进行or匹配(|)
(3)匹配几个字符之一[和]
[]相当于一个迭代器range,只要在里面的都可返回,相当于另一种形式的or。
但是这里得到的结果有是不一样的,因为这里是应用于整个串,而[]只搜第一个字符
只要在[]变为[123]除这些字符外的任何东西,相当于取反。
(4)匹配范围
上面介绍了[],表示一个集合范围[0123456789],为简化变为[0-9]
(5)匹配特殊字符
前面介绍.是一种通配符,哪如果要匹配这个.呢,就相当于C++中需要找到关键字,就是用转移字符一样,这里用\表示转义。
这里不是预期的结果,使用\呢?
(6)匹配字符类
(7)匹配多个实例
这里通过\转义(),重复元字符’?'作用的前面一个字符表示是可选的。
注意正则化中的式子不能随意加空格隔开。
{4}要求前面的额字符出现4次。
相当于下面这个
(8)定位符
^表示需要从字符串头开始匹配。
三、创建计算字段
Q:由于每个列的数据的数据类型是不一样的,那么如何输出不同类型的数据到应用程序中呢?
A:计算字段(field)
1、拼接(concatenate)字段
需要吧vend_name 和 vend_country进行拼接起来。在MySQL的select语句中,可使用Concat()函数进行拼接两个列。
这里通过括号括起来,以便于进行区分。
RTrim()函数可以用来删除右侧多余的空格。同理LTrim()用于删除左边的空格。
Q:正如上面检索的内容,那么这个拼接的内容应该取个新的列名字吧,怎么取呢?
A:别名(alias),用as关键字赋予
取了一个名为vend_title的别名。他与实际的表列一样。
2、执行算数计算
汇总总物品的价格