MySQL字符串函数
CONCAT()
描述:字符串拼接
用法:concat(
str
[,str
])
select concat(1,' test')
> 1 test
CONCAT_WS()
描述:特殊的字符串拼接 会已
separator
进行拼接用法:CONCAT_WS(
separator
,str
[,str
])
select CONCAT_WS('|',1,2,3)
> 1|2|3
select CONCAT_WS('|',1)
> 1
INSERT()
描述:指定字符串
str
从pos
下标开始后len
位字符串被newstr
替换。用法:INSERT(
str
,pos
,len
,newstr
)注意:任意参数为
NULL
时返回NULL
。pos
从1
开始
select INSERT("ABCDEFG",1,1,"a"),INSERT("ABCDEFG",1,2,"a")
> aBCDEFG aCDEFG
# pos 如果超出str的下标范围则返回原 str
select INSERT("ABCDEFG",0,2,"a"),INSERT("ABCDEFG",8,2,"a")
> ABCDEFG ABCDEFG
# 当len为0时则代表在pos前插入newstr 当len为为负数时时则代表在str直接被new str替换
select INSERT("ABCDEFG",1,0,"abcdefg"),INSERT("ABCDEFG",1,-1,"abcdefg")
> abcdefgABCDEFG abcdefg
# 任意参数为NULL时返回NULL。
select INSERT("ABCDEFG",1,null,"abcdefg"),INSERT("ABCDEFG",null,-1,"abcdefg")
> NULL NULL
INSTR()、LOCATE()
描述:返回
substr
字串在str
中第一次出现的位置,没有找到则返回0 两个函数只是参数值调换了位置注意区分用法:INSTR(
str
,substr
) | LOCATE(substr
,str
)注意*:如果
substr
为"" 空字符串 则会返回 1 不知道这个是不是bug 有点坑。任意参数为NULL
返回NULL
。
select INSTR("abc","b"),INSTR("abc","bc"),INSTR("abc","d"),INSTR("abc","")
> 2 2 0 1
select LOCATE("b","abc"),LOCATE("bc","abc"),LOCATE("d","abc"),LOCATE("","abc")
> 2 2 0 1
LEFT()、RIGHT()
描述:两个函数 分别返回
str
左 右 返回len
长度的子串用法:LEFT(
str
,len
)|RIGHT(str
,len
);注意:任意参数为
NULL
返回NULL
select LEFT('ABCDEFG',4),RIGHT('ABCDEFG',4)
> ABCD DEFG
LENGTH()
描述:返回
str
的字节数用法:LENGTH(
str
)注意:
UTF-8
编码的中文占3位、GBK
编码的中文占2位
select LENGTH("中文"),LENGTH("ABC")
> 6 3
CHAR_LENGTH()
描述:返回
str
的字符数用法:CHAR_LENGTH(
str
)注意:与LENGTH()不同 中文也只占一位
select CHAR_LENGTH("中文"),CHAR_LENGTH("ABC")
> 2 3
LOWER()、UPPER()
描述:两个函数分别将
str
转化为小写与大写用法:LOWER(
str
) |UPPER(str
)
select LOWER("MySQL"),UPPER("MySQL")
> mysql MYSQL
LPAD()、RPAD()
描述:两个函数分别为 当
str
小于len
长度时 向左|右 填充padstr
用法:LPAD(
str
,len
,padstr
) |RPAD(str
,len
,padstr
)注意:当
len
-1返回的是NULL
select LPAD("HELLO",6,"??"),LPAD("HELLO",-1,"??"),RPAD("HELLO",6,"??"),RPAD("HELLO",-1,"??");
> ?HELLO NULL HELLO? NULL
REPEAT()
描述:返回
str
重复count
的字符串用法:REPEAT(
str
,count
)
select REPEAT("ABC|",3)
> ABC|ABC|ABC|
REPLACE()
描述:返回
str
中from_str
替换为to_str
后的字符串用法:REPLACE(
str
,from_str
,to_str
)
select REPLACE("www.baidu.com",".","#")
> www#baidu#com
REVERSE()
描述:返回
str
反转后的字符串用法:REVERSE(
str
)
select REVERSE('hello world')
> dlrow olleh
STRCMP()
描述:比较
expr1
,expr2
,相同返回0expr1
大返回1,反之返回-1.类似于String
类中的compare用法:STRCMP(
expr1
,expr2
)注意:
会忽略大小写比较
SELECT STRCMP("HeLLO","heLlo")
> 0
SELECT STRCMP("HeLLO1","heLlo")
> 1
SELECT STRCMP("HeLLO","heLlo1")
> -1
SUBSTR()*
描述:截取
str
下标在pos
后len
位的子串,如果没有len
则返回pos
的整个字串用法:
SUBSTR(
str
FROMpos
),SUBSTR(
str
,pos
),SUBSTR(
str
,pos
,len
),SUBSTR(
str
FROMpos
FORlen
)注意:下标是由
1
开始的。当pos
为负数时则为str
倒数第pos
开始截取
select 'Compenment',SUBSTR('Compenment',4);
> Compenment penment
select 'Compenment',SUBSTR('Compenment' FROM 4);
> Compenment penment
select 'Compenment',SUBSTR('Compenment',4,3);
> Compenment pen
select 'Compenment',SUBSTR('Compenment' FROM 4 FOR 3);
> Compenment pen
select 'Compenment',SUBSTR('Compenment' FROM -4);
> Compenment ment
select 'Compenment',SUBSTR('Compenment' FROM -4 FOR 3);
> Compenment men
SUBSTRING_INDEX()
描述:返回
str
以delim
分割后count
之前的所有内容,当count
为负数是则返回count
之后的字符串用法:SUBSTRING_INDEX(
str
,delim
,count
);
SELECT SUBSTRING_INDEX('www.mysql.com','.',2);
> www.mysql
SELECT SUBSTRING_INDEX('www.mysql.com','.',-2);
> mysql.com
COALESCE()
描述:返回列表中的第一个非NULL值,如果没有非NULL值则返回NULL。
用法:COALESCE(str1,str2,…)
SELECT COALESCE(NULL,1);
> 1
SELECT COALESCE(NULL,NULL,NULL);
> null
FIND_IN_SET()
描述:查看
str
在strlist
中的下标,从1开始,没有则返回0。strlist
是以逗号分隔的字符串。
用法:FIND_IN_SET(str,strlist)
select FIND_IN_SET('1','3, 2 ,1');
> 3
select FIND_IN_SET('0','3, 2 ,1');
> 0