常用mysql内置函数说明&对比:
1.返回字符长度 CHAR_LENGTH(str) & LENGTH(str)
说明:
CHAR_LENGTH(str): 返回字符串字符个数(所有字符都为一个单位)
LENGTH(str):返回字符串长度(输出字符串长度,在utf-8字符集下,一个中文3字符)
举例:
--字符集:utf-8 输出结果 comments
select CHAR_LENGTH('hello world'); --5
select LENGTH('hello world'); --5
select CHAR_LENGTH('你好,世界'); --5
select LENGTH('你好,世界'); --15 mysql在utf-8字符集下,一个中文3字符
说明:
concat: 如果存在null则返回null
concat_ws():直接返回,null就是空字符串,返回剩下部分
举例:
create table zivatest(
a int,
b varchar(30),
c varchar(30),
d varchar(30));
INSERT into zivatest values(1,null,'我是c和弦','');
输出结果 comments
select concat(a,b,c,d) from zivatest; --null
select concat_ws(a,b,c,d) from zivatest; --我是c和弦1 不知道为什么顺序不对
select concat_ws(b,c,d) from zivatest; --null 首字段为null,返回还是null
3.进制转换 CONV(N,from_base,to_base)
4.数值格式化 format()
第一个参数保留第二个参数的小数长度,
注意是截取,不是四舍五入,
超过还能补位0呢
输出结果 comments
select FORMAT('12.445566',4) --12.44556 截取式,不四舍五入
select FORMAT('12.445566',8) --12.44556600 不够小数位能补0喔~
5.替换/插入字符串 INSERT(str,pos,len,newstr)
输出结果 comments
select INSERT('abcdefg',2,2,'!替换你!') ; --a!替换你!defg
select INSERT('abcdefg',100,2,'!替换你!'); --abcdefg 首字符超过长度 返回原字符串
select INSERT('abcdefg',2,100,'!替换你!'); --a!替换你! 替换长度超过长度 完全替换开始字符后的所有
select INSERT('abcdefg',2,0,'!替换你!'); --a!替换你!bcdefg 替换长度为0 插入
6.返回子字符串开始位置
INSTR(str,substr)
LEFT(str,len)
RIGHT(str,len)
LOCATE(substr,str)
输出结果 comments
select LOCATE('bcd','abcdefg') --2
select INSTR('abcdefg','bcd'); --2
select INSTR('abcdefg','z'); --0 不存在返回0
select INSTR('abc defg',' '); --4 空格也能用喔~
8.变大/小写 UPPER(str) LOWER(str)
输出结果
SELECT LOWER('aaaBBBccc你好'); --aaabbbccc你好
SELECT UPPER('aaBBBccc你好'); --AABBBCCC你好
输出结果
select TRIM(' aa bb cc '); --'aa bb cc'
select LTRIM(' aa bb cc '); --'aa bb cc '
select RTRIM(' aa bb cc '); --' aa bb cc'
10.重复字符串: REPEAT(str,count)
输出结果
select repeat('你好',2); --你好你好
11.REPLACE 替换 返回替换之后整个字符串
输出结果
select REPLACE('hello world','l','zz') --hezzzzo worzzd
select REPLACE('明天 你好','你','你们') --明天 你们好
--返回一个由n空格组成的字符串
13.substring
输出结果
SELECT SUBSTRING('abcdgfg' FROM 2 FOR 3); --bcd
SELECT SUBSTRING('abcdefg' FROM 2) --bcdefg
SELECT SUBSTRING('abcdefg',2) --bcdefg
SELECT SUBSTRING('abcdefg',2,3) --bcd
文章来源传送门:
以下是本人亲测的真实结果输出(navicat -- mysql -- utf-8 )
1.返回字符长度 CHAR_LENGTH(str) & LENGTH(str)
说明:
CHAR_LENGTH(str): 返回字符串字符个数(所有字符都为一个单位)
LENGTH(str):返回字符串长度(输出字符串长度,在utf-8字符集下,一个中文3字符)
举例:
--字符集:utf-8 输出结果 comments
select CHAR_LENGTH('hello world'); --5
select LENGTH('hello world'); --5
select CHAR_LENGTH('你好,世界'); --5
select LENGTH('你好,世界'); --15 mysql在utf-8字符集下,一个中文3字符
说明:
concat: 如果存在null则返回null
concat_ws():直接返回,null就是空字符串,返回剩下部分
举例:
create table zivatest(
a int,
b varchar(30),
c varchar(30),
d varchar(30));
INSERT into zivatest values(1,null,'我是c和弦','');
输出结果 comments
select concat(a,b,c,d) from zivatest; --null
select concat_ws(a,b,c,d) from zivatest; --我是c和弦1 不知道为什么顺序不对
select concat_ws(b,c,d) from zivatest; --null 首字段为null,返回还是null
3.进制转换 CONV(N,from_base,to_base)
4.数值格式化 format()
第一个参数保留第二个参数的小数长度,
注意是截取,不是四舍五入,
超过还能补位0呢
输出结果 comments
select FORMAT('12.445566',4) --12.44556 截取式,不四舍五入
select FORMAT('12.445566',8) --12.44556600 不够小数位能补0喔~
5.替换/插入字符串 INSERT(str,pos,len,newstr)
输出结果 comments
select INSERT('abcdefg',2,2,'!替换你!') ; --a!替换你!defg
select INSERT('abcdefg',100,2,'!替换你!'); --abcdefg 首字符超过长度 返回原字符串
select INSERT('abcdefg',2,100,'!替换你!'); --a!替换你! 替换长度超过长度 完全替换开始字符后的所有
select INSERT('abcdefg',2,0,'!替换你!'); --a!替换你!bcdefg 替换长度为0 插入
6.返回子字符串开始位置
INSTR(str,substr)
LEFT(str,len)
RIGHT(str,len)
LOCATE(substr,str)
输出结果 comments
select LOCATE('bcd','abcdefg') --2
select INSTR('abcdefg','bcd'); --2
select INSTR('abcdefg','z'); --0 不存在返回0
select INSTR('abc defg',' '); --4 空格也能用喔~
8.变大/小写 UPPER(str) LOWER(str)
输出结果
SELECT LOWER('aaaBBBccc你好'); --aaabbbccc你好
SELECT UPPER('aaBBBccc你好'); --AABBBCCC你好
输出结果
select TRIM(' aa bb cc '); --'aa bb cc'
select LTRIM(' aa bb cc '); --'aa bb cc '
select RTRIM(' aa bb cc '); --' aa bb cc'
10.重复字符串: REPEAT(str,count)
输出结果
select repeat('你好',2); --你好你好
11.REPLACE 替换 返回替换之后整个字符串
输出结果
select REPLACE('hello world','l','zz') --hezzzzo worzzd
select REPLACE('明天 你好','你','你们') --明天 你们好
--返回一个由n空格组成的字符串
13.substring
输出结果
SELECT SUBSTRING('abcdgfg' FROM 2 FOR 3); --bcd
SELECT SUBSTRING('abcdefg' FROM 2) --bcdefg
SELECT SUBSTRING('abcdefg',2) --bcdefg
SELECT SUBSTRING('abcdefg',2,3) --bcd