在mysql需要使用 '\\' 为前导的匹配方式,如匹配 '.' 则表达式为 '\\.'
元字符 说明\\f 换页
\\n 换行
\\r 回车
\\t 制表
\\v 纵向制表
-- 匹配 vend_name 列中含有小数点记录 select vend_name from vendors where vend_name regexp '\\.'; 6.5 匹配字符类
字符类
类 说明[:alnum:] 匹配字符和数字(同 [a-zA-Z0-9])
[:alpha:] 任意字符(同[a-zA-Z])
[:blank:] 空格和制表(同[\\t])
[:cntrl:] ASCII控制字符(ASCII 0到31和127)
[:digit:] 任意数字(同[0-9])
[:graph:] 与[:print:]相同但不包括空格
[:lower:] 任意小写字母(同[a-z])
[:print:] 任意可打印字符
[:punct:] 既不在[:alnum:]又不在[:cntrl:]中的任意字符
[:space:] 包括空格在内的任意空白字符(同[\\f\\n\\r\\t\v])
[:upper:] 任意大写字母(同[A-Z])
[:xdigit:] 任意十六进制数字(同[a-fA-F0-9])
6.5 匹配多个示例 元字符 说明
* 0个或多个匹配
+ 1个或多个匹配(等于 {1,})
? 0个或1个匹配(等于 {0,1})
{n} n 是一个非负整数。匹配确定的 n 次
{n,m} 最少匹配 n 次且最多匹配 m 次 (m<=255)
select prod_name from products where prod_name regexp '\\([0-9] sticks?\\)'; select prod_name from products where prod_name regexp '[[:digit:]]{4}'; 6.6 定位符
定位元字符
元字符 说明^ 文本的开始( ^在[]内表示非 例如 [^a-z] 即非 a-z )
$ 文本的结尾
[[:<:]] 词的开始
[[:>:]] 词的结尾
select prod_name from products where prod_name regexp '^[0-9\\.]'; 7.0 创建计算字段 7.1 concat() 拼接字段
使用 concat() 函数用于把多个列拼接起来
select concat(列1, 列2, ..., 列n) from 表名; select concat(vend_name, '(', vend_country, ')') from vendors; 7.2 as 使用别名上面输出的表抬头是不是感觉好丑,那么就可以使用 as
select concat(列1, 列2, ..., 列n) as 别名 from 表名; select concat(vend_name, '(', vend_country, ')') as vend_tittle from vendors; 7.2.1 trim() 删除左右两边的空格 rtrim(),ltrim() select concat(trim(vend_name), '(', trim(vend_country), ')') as vend_tittle from vendors; 7.3 算式计算 SELECT prod_id, quantity, item_price, quantity * item_price AS expanded_price FROM orderitems WHERE order_num = 20005; 操作符 说明+ 加
- 减
* 乘
/ 除
函数的测试
mysql> select now(); +---------------------+ | now() | +---------------------+ | 2021-03-23 18:15:02 | +---------------------+ 1 row in set (0.00 sec) mysql> select trim(' aaa'); +---------------+ | trim(' aaa') | +---------------+ | aaa | +---------------+ 1 row in set (0.00 sec) mysql> select 'hello' regexp '[a-z]'; +------------------------+ | 'hello' regexp '[a-z]' | +------------------------+ | 1 | +------------------------+ 1 row in set (0.00 sec) mysql> select 'hello' regexp '[0-9]'; +------------------------+ | 'hello' regexp '[0-9]' | +------------------------+ | 0 | +------------------------+ 1 row in set (0.00 sec) 8.0 函数 8.1 常见文理处理函数 函数 说明length(s) 返回串s的长度
trim(s) 去掉字符串 s 开始和结尾处的空格
upper(s) 将字符串转换为大写
left(s,n) 返回字符串 s 的前 n 个字符
lower(s) 将字符串 s 的所有字母变成小写字母
locate(s1,s) 从字符串 s 中获取 s1 的开始位置
right(s,n) 返回字符串 s 的后 n 个字符
ltrim(s) 去掉字符串 s 开始处的空格
rtrim(s) 去掉字符串 s 结尾处的空格
substring(s, start, length) 从字符串 s 的 start 位置截取长度为 length 的子字符串
8.1 常见日期和时间处理函数 函数名 描述
addDate(d,n) 计算起始日期 d 加上 n 天的日期
addTime(t,n) n 是一个时间表达式,时间 t 加上时间表达式 n
curDate() 返回当前日期
curTime() 返回当前时间
date() 从日期或日期时间表达式中提取日期值
CURRENT_TIME 返回当前时间
CURRENT_DATE() 返回当前日期
CURRENT_TIMESTAMP() 返回当前日期和时间
dateDiff(d1,d2) 计算日期 d1->d2 之间相隔的天数
date_add(d,INTERVAL expr type) 计算起始日期 d 加上一个时间段后的日期
date_format(d,f) 按表达式 f的要求显示日期 d
day(d) 返回日期值 d 的日期部分
dayOfMonth(d) 计算日期 d 是本月的第几天
dayOfWeek(d) 日期 d 今天是星期几,1 星期日,2 星期一,以此类推
dayOfYear(d) 计算日期 d 是本年的第几天
hour(t) 返回 t 中的小时值
minute(t) 返回 t 中的分钟值
month(d) 返回日期d中的月份值,1 到 12
now() 返回当前日期和时间
time(expression) 提取传入表达式的时间部分
year(d) 返回年份
select cust_id, order_num from orders where order_date = '2005-09-01'; select cust_id, order_num from orders where date(order_date) = '2005-09-01'; select cust_id, order_num from orders where year(order_date) = 2005 and month(order_date)=9; SELECT cust_id, order_num FROM orders WHERE date( order_date ) BETWEEN '2005-09-01' AND '2005-09-30'; 8.2 常见数值处理函数 函数名 描述
ABS(x) 返回 x 的绝对值
COS(x) 求余弦值(参数是弧度)
EXP(x) 返回 e 的 x 次方
MOD(x,y) 返回 x 除以 y 以后的余数
PI() 返回圆周率(3.141593)
ROUND(x) 返回离 x 最近的整数
SIN(x) 求正弦值(参数是弧度)
SQRT(x) 返回x的平方根
TAN(x) 求正切值(参数是弧度)
9.0 聚合or集合函数