常用截取函数
length -- 计算字符串长度
concat -- 连接两个字符串
substring - 截取字符串
floor/ceil --... 数学函数
- select length('2340');
- --->4
- select length(2340);
- --->4
- select length('2019-09-01');
- --->10
- select length(2019-09-01);
- --->4
- select concat('1','1');
- --->11
- select concat(1,1);
- --->11
- select concat('2019-09-01','2019-09-02');
- --->2019-09-012019-09-02
- select concat(2019-09-02,2019-09-02);
- --->20082008
- select concat('a','a');
- --->aa
- select concat('a','a');
- --->a a
- SELECT SUBSTRING('computer',3) AS col1, #第一个位置为 1
- SUBSTRING('computer',3,4) AS col2,
- SUBSTRING('computer',-3) AS col3,
- SUBSTRING('computer',-5,3) AS col4;
col1 返回从第 3 个位置开始到字符串结尾的子字符串, 结果为 "mputer"
col2 返回从第 3 个位置开始长度为 4 的子字符串, 结果为 "mput";
col3 返回从倒数第 3 个位置到字符串结尾的子字符串, 结果为 "ter";
col4 返回从倒数第 5 个位置开始长度为 3 的子字符串, 结果为 "put".
- select floor(100.1); #floor 函数返回小于等于该值的最大整数.(向下取整)
- --->100
- select floor('100.1');
- --->100
- select floor(-100.1);
- -->-101
- select ceil(100.1);# 向上取整
- --->101
- select ceil(-100.1);
- --->-100
- select round(15.4)# 四舍五入
- select round(15.5)# 四舍五入
- select left('2019-08-01 00:00:00',4); #第一个位置为 1
- -->2019
- select mid('2019-08-01 00:00:00',6,2);
- -->08
- select right('2019-08-01 00:00:00',2);
- -->00
- substring_index(str,delim,count)
str: 要处理的字符串
delim: 分隔符
count: 计数
- str=www.wikibt.com
- substring_index(str,'.',1)
- --->www
- substring_index(str,'.',2)
- --->www.wikibt
也就是说, 如果 count 是正数, 那么就是从左往右数, 第 N 个分隔符的左边的全部内容
相反, 如果是负数, 那么就是从右往左数, 第 N 个分隔符右边的所有内容, 如:
- substring_index(str,'.',-2)
- --->wikibt.com
有人会问, 如果我要中间的的 wikibt 怎么办?
很简单的, 两个方向:
从右数第二个分隔符的右边全部, 再从左数的第一个分隔符的左边:
- substring_index(substring_index(str,'.',-2),'.',1);
- 1
- SUBSTR(str,num)
- select SUBSTR('www.wikibt.com',5)
- --->wikibt.com
- select SUBSTR('www.wikibt.com',-5)
- --->t.com
num>0 时, 从左往右数第 num 个字符右边的
num<0 时, 从右往左数第 num 个字符右边的
INSTR(STR,SUBSTR)
STR 被搜索的字符串
SUBSTR 希望搜索的字符串
结论: 在字符串 STR 里面, 字符串 SUBSTR 出现的第一个位置 (INDEX),INDEX 是从 1 开始计算, 如果没有找到就直接返回 0, 没有返回负数的情况.
-- 查询字符串存在的情况下:
- SELECT INSTR("abcd",'b');
- --->2
-- 查询字符串不存在的情况下:
- SELECT INSTR("abcd",'f')
- --->0
SUBSTR 与 INSTR
- str=www23154
- select substr(str,instr(str,'')+1)
- 1
- 2
实战
title contents
[Java3y 简单] 快乐学习
[Java3y 简单] 快乐学习渣渣
[Java3y 通俗易懂] 简单学
[Java3y 通俗易懂] 简单学芭芭拉
[Java3y 平易近人] 无聊学
[Java3y 初学者] 枯燥学
[Java3y 初学者] 枯燥学呱呱
[Java3y 大数据] 欣慰学
[Java3y 学习] 巴拉巴拉学
[Java3y 学习] 巴拉巴拉学哈哈
[Java3y 好] 雨女无瓜学
现在我统计出 [] 括号里边出现的频次, 比如说: Java3y 通俗易懂 出现的频次是多少.
- select substring_index(left(title , INSTR(title , ']') -1 ) , '[',-1)
- FROM xxx_table
- 1
- 2
求当前的小时
- select now()
- select mid(now(),12,2)
- select SUBSTRING(now(),12,2)
- select SUBSTRING_INDEX(now(),' ',-1)
- select SUBSTRING_INDEX(SUBSTRING_INDEX(now(),'',-1),':',1)
- select SUBSTRING_INDEX(left(now(),instr(now(),':')-1),' ',-1)
来源: http://www.bubuko.com/infodetail-3204021.html