1. 字符串拼接
-
concat函数 多个字段拼接显示
SELECT CONCAT("a","b","c") AS 拼接结果是字段连接起来
-
concat_ws 比一个分隔符去连接多个字段
SELECT CONCAT_WS("_","a","b","c") AS "_连接多个字段"
-
group_concat(distinct 字段) 分组后,将分组名一样的,值用
,
拼接显示
查询每个部门的工种编号,相同部门的工作编号以逗号连接起来。
SELECT department_id,GROUP_CONCAT(job_id) FROM employees WHERE department_id IS NOT NULL GROUP BY department_id;
-
find_in_str(str, strlist) 返回str在strlist中的索引。strlist是一个
,
分隔的字符串。存在 返回索引,不存在返回0, 参数有其中一个为null
,结果为null
SELECT FIND_IN_SET("a","fds,a,f,a,f,a,f")
结果为索引2
SELECT FIND_IN_SET("a1","fds,a,f,a,f,a,f")
找不到返回为0
SELECT FIND_IN_SET(NULL,"fds,a,f,a,f,a,f")
参数其中一个为null结果为null
find_in_set(str, strlist)的真正用法是跟着where 后面 strlist是一个select语句的查询结果级
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)
- 截取英文第一个字母
SELECT SUBSTR("fafaffdas",1,1)
截取函数left(str,len) right(str,len)
截取字符串左/右边 开始的len个字符
SELECT LEFT("fdasfasf",3)
SELECT RIGHT("fsdafas",6)
截取函数 truncate(x,y),一般针对数值型,如果是字符串型,结果为0
SELECT TRUNCATE("3.555",2)
SELECT TRUNCATE(3.555,2)
SELECT TRUNCATE("fdasf",1)
字符串无法转化成数值型的结果为 0
获取字节长度和字符个数
length() 获取字节长度,utf-8 中文为3个字节长度,gbk 中文为2个字节长度
char_length() 获取字符个数,与length是有区别的。
SELECT LENGTH("我aaa")
SELECT CHAR_LENGTH("我aaa")
字符串替换
有2个函数 一个是 replace(str,a,b)
,a 另外一个是 insert(str,index,len,newstr)
SELECT REPLACE("fasfa","a","爱")
SELECT INSERT("fdsafaf",2,4,"爱爱")
replace是所有匹配都替换,insert是在一定范围替换
返回最大/小值
*greatest(集合也可以是一个嵌套语句)
最大值
-
least()
最小值
SELECT GREATEST(3,"100",1,4)
SELECT LEAST(3,"100",1,4)
字符串反转 reverse(str)
SELECT REVERSE("abcd")
字符串 大写或者小写
SELECT UPPER("fasfa")
SELECT LOWER("fFdsa")
数学函数round(x,y) x是小数,y保留几位小时,四舍五入
SELECT ROUND(3.156,2)
返回索引 instr
SELECT INSTR("fdasf", "d")
比较大小strcmp(x,y) 大于返回1,小于返回-1,等于返回 0
SELECT STRCMP("2","3")
SELECT STRCMP(3,2)
SELECT STRCMP("4",4)
待续。。。。。 改天写后面的,时间不够