1. 字符串拼接
-
concat函数 多个字段拼接显示
SELECT CONCAT("a","b","c") AS 拼接结果是字段连接起来
image.png
-
concat_ws 比一个分隔符去连接多个字段
SELECT CONCAT_WS("_","a","b","c") AS "_连接多个字段"
image.png
-
group_concat(distinct 字段) 分组后,将分组名一样的,值用
,
拼接显示
查询每个部门的工种编号,相同部门的工作编号以逗号连接起来。
SELECT department_id,GROUP_CONCAT(job_id) FROM employees WHERE department_id IS NOT NULL GROUP BY department_id;
image.png
-
find_in_str(str, strlist) 返回str在strlist中的索引。strlist是一个
,
分隔的字符串。存在 返回索引,不存在返回0, 参数有其中一个为null
,结果为null
SELECT FIND_IN_SET("a","fds,a,f,a,f,a,f")
结果为索引2
image.png
SELECT FIND_IN_SET("a1","fds,a,f,a,f,a,f")
找不到返回为0
![](https://img.haomeiwen.com/i13983750/e33edc47bb3dbf98.png)
SELECT FIND_IN_SET(NULL,"fds,a,f,a,f,a,f")
参数其中一个为null结果为null
![](https://img.haomeiwen.com/i13983750/0ef46e65b5651bef.png)
find_in_set(str, strlist)的真正用法是跟着where 后面 strlist是一个select语句的查询结果级
![](https://img.haomeiwen.com/i13983750/dc8bfa18ee0b1196.png)
select id,name from ba where id in (select model_id from ab where name='大众集合');
实际上面的语法不能用,正确的需要用find_in_set
select id,name from ba where id in (select model_id from ab where name='大众集合');
截取函数substr(str,index,len)
截取字符串索引为index开始,后面len个字符
从第2个元素开始截取到第5个。 其实从索引2开始,向后截取4个字符个数。包括索引2的位置
SELECT SUBSTR("fafaffdas",2,4)
![](https://img.haomeiwen.com/i13983750/a78787bb300e02db.png)
- 截取英文第一个字母
SELECT SUBSTR("fafaffdas",1,1)
image.png
截取函数left(str,len) right(str,len)
截取字符串左/右边 开始的len个字符
SELECT LEFT("fdasfasf",3)
![](https://img.haomeiwen.com/i13983750/2d47052dec8af8e9.png)
SELECT RIGHT("fsdafas",6)
![](https://img.haomeiwen.com/i13983750/6f59eac394f00565.png)
截取函数 truncate(x,y),一般针对数值型,如果是字符串型,结果为0
SELECT TRUNCATE("3.555",2)
SELECT TRUNCATE(3.555,2)
![](https://img.haomeiwen.com/i13983750/4fb326fc6a8976bf.png)
SELECT TRUNCATE("fdasf",1)
字符串无法转化成数值型的结果为 0
![](https://img.haomeiwen.com/i13983750/8fd2eadd459e1541.png)
获取字节长度和字符个数
length() 获取字节长度,utf-8 中文为3个字节长度,gbk 中文为2个字节长度
char_length() 获取字符个数,与length是有区别的。
SELECT LENGTH("我aaa")
![](https://img.haomeiwen.com/i13983750/632ad9709debbf40.png)
SELECT CHAR_LENGTH("我aaa")
![](https://img.haomeiwen.com/i13983750/8364763253c112b6.png)
字符串替换
有2个函数 一个是 replace(str,a,b)
,a 另外一个是 insert(str,index,len,newstr)
SELECT REPLACE("fasfa","a","爱")
![](https://img.haomeiwen.com/i13983750/52c1011d5f5ad446.png)
SELECT INSERT("fdsafaf",2,4,"爱爱")
![](https://img.haomeiwen.com/i13983750/b71aa18bac585364.png)
replace是所有匹配都替换,insert是在一定范围替换
返回最大/小值
*greatest(集合也可以是一个嵌套语句)
最大值
-
least()
最小值
SELECT GREATEST(3,"100",1,4)
image.png
SELECT LEAST(3,"100",1,4)
![](https://img.haomeiwen.com/i13983750/7dc925391da92623.png)
字符串反转 reverse(str)
SELECT REVERSE("abcd")
![](https://img.haomeiwen.com/i13983750/e1cf52b8567b36bf.png)
字符串 大写或者小写
SELECT UPPER("fasfa")
![](https://img.haomeiwen.com/i13983750/8189eed58a88e682.png)
SELECT LOWER("fFdsa")
![](https://img.haomeiwen.com/i13983750/91e9dcf4737ccebf.png)
数学函数round(x,y) x是小数,y保留几位小时,四舍五入
SELECT ROUND(3.156,2)
![](https://img.haomeiwen.com/i13983750/1105820f245d9941.png)
返回索引 instr
SELECT INSTR("fdasf", "d")
![](https://img.haomeiwen.com/i13983750/bcb58649fecf7cbe.png)
比较大小strcmp(x,y) 大于返回1,小于返回-1,等于返回 0
SELECT STRCMP("2","3")
![](https://img.haomeiwen.com/i13983750/8175a0b5ce4202ce.png)
SELECT STRCMP(3,2)
![](https://img.haomeiwen.com/i13983750/bc861829e067e639.png)
SELECT STRCMP("4",4)
![](https://img.haomeiwen.com/i13983750/b64d7d64874a4fa3.png)
待续。。。。。 改天写后面的,时间不够
网友评论