mysql需要注意的一些函数

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

image.png

SELECT FIND_IN_SET(NULL,"fds,a,f,a,f,a,f") 参数其中一个为null结果为null

image.png

find_in_set(str, strlist)的真正用法是跟着where 后面 strlist是一个select语句的查询结果级

image.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)

image.png

  • 截取英文第一个字母
    SELECT SUBSTR("fafaffdas",1,1)
    image.png

截取函数left(str,len) right(str,len)

截取字符串左/右边 开始的len个字符
SELECT LEFT("fdasfasf",3)

image.png

SELECT RIGHT("fsdafas",6)

image.png

截取函数 truncate(x,y),一般针对数值型,如果是字符串型,结果为0

SELECT TRUNCATE("3.555",2)
SELECT TRUNCATE(3.555,2)

image.png

SELECT TRUNCATE("fdasf",1) 字符串无法转化成数值型的结果为 0
image.png

获取字节长度和字符个数

length() 获取字节长度,utf-8 中文为3个字节长度,gbk 中文为2个字节长度
char_length() 获取字符个数,与length是有区别的。
SELECT LENGTH("我aaa")

image.png

SELECT CHAR_LENGTH("我aaa")

image.png

字符串替换

有2个函数 一个是 replace(str,a,b),a 另外一个是 insert(str,index,len,newstr)
SELECT REPLACE("fasfa","a","爱")

image.png

SELECT INSERT("fdsafaf",2,4,"爱爱")
image.png

replace是所有匹配都替换,insert是在一定范围替换

返回最大/小值

*greatest(集合也可以是一个嵌套语句) 最大值

  • least() 最小值
    SELECT GREATEST(3,"100",1,4)
    image.png

SELECT LEAST(3,"100",1,4)

image.png

字符串反转 reverse(str)

SELECT REVERSE("abcd")

image.png

字符串 大写或者小写

SELECT UPPER("fasfa")

image.png

SELECT LOWER("fFdsa")

image.png

数学函数round(x,y) x是小数,y保留几位小时,四舍五入

SELECT ROUND(3.156,2)

image.png

返回索引 instr

SELECT INSTR("fdasf", "d")


image.png

比较大小strcmp(x,y) 大于返回1,小于返回-1,等于返回 0

SELECT STRCMP("2","3")

image.png

SELECT STRCMP(3,2)

image.png

SELECT STRCMP("4",4)

image.png

待续。。。。。 改天写后面的,时间不够

你可能感兴趣的:(mysql需要注意的一些函数)