目录
(1)计算字符串字符数和字符串长度的函数。
(2)合并字符串长度concat(s1,s2,…)、concat_ws(x,s1,s2,…)。
(3)替换字符串的函数insert(s1,x,len,s2)。
(4)字母大小写转换函数。
(5)获取指定长度的字符串的函数left(s,n)和right(s,n)。
(6)填充字符串的函数LPAD(s1,len,s2)和RPAD(s1,len,s2)。
(7)删除空格的函数LTRIM(s)、RTRIM(s)和TRIM(s)。
(8)删除指定字符串的函数TRIM(s1 from s)。
(9)重复生成字符串的函数repeat(s,n)。
(10)空格函数SPACE(n)和替换函数REPLA(s,s1,s2)。
(11)比较字符串大小的函数STRCMP(s1,s2)。
(12)获取子串的函数SUBSTRING(s,n,len)和MID(s,n,len)。
(13)匹配子串开始位置的函数。
(14)字符串逆序的函数REVERSE(s)。
(15)返回指定位置的字符串的函数。
(16)返回指定字符串位置的函数FIELD(s,s1,s2)。
(17)返回子串位置的函数FIND_IN_SET(S1,S2)。
(18)选取字符串的函数MAKE_SET(x,s1,s2)。
举例说明介绍
(1)计算字符串字符数和字符串长度的函数。
1.char_length(str)
【例】使用char_length函数计算字符串字符个数,SQL语句如下:
mysql> select char_length('date'),
-> char_length('egg');
char_length('date') | char_length('egg') |
---|---|
4 | 3 |
1 row in set (0.06 sec)
2.length(str)
【例】使用length(str)函数计算字符串长度,SQL语句如下:
mysql> select length('date'),length('egg'); | |
---|---|
length('date') | length('egg') |
4 | 3 |
1 row in set (0.00 sec)
(2)合并字符串长度concat(s1,s2,...)、concat_ws(x,s1,s2,...)。
1.concat(s1,s2…)
【例】使用concat函数连接字符串,SQL语句如下:
mysql> select concat('My SQL','5.7'),
-> concat('My',null,'SQL');
concat('My SQL','5.7') | concat('My',null,'SQL') |
---|---|
My SQL5.7 | NULL |
1 row in set (0.05 sec)
2.concat_ws(x,s1,s2,…)
【例】使用concat_ws函数连接带分隔符的字符串,SQL语句如下:
mysql> select concat_ws('-','1st','2nd','3rd'),concat_ws('*','1st',null,'3rd'); | |
---|---|
concat_ws('-','1st','2nd','3rd') | concat_ws('*','1st',null,'3rd') |
1st-2nd-3rd | 1st*3rd |
1 row in set (0.05 sec)
(3)替换字符串的函数insert(s1,x,len,s2)。
【例】使用insert函数进行字符串代替操作,SQL语句如下:
mysql> select insert('Quest',2,4,'What') as coll; |
---|
coll |
QWhat |
1 row in set (0.05 sec)
(4)字母大小写转换函数。
1.LOWER(str)和LCASE(str)
【例】使用lower函数或者lcase函数将字符串str中的字母字符全部转换成小写,SQL语句如下:
mysql> select lower('BEAUTIFUL'),lcase('WeLL'); | |
---|---|
lower('beautiful') | lcase('well') |
beautiful | well |
1 row in set (0.05 sec)
2.UPPER(str)和UCASEE(str)
【例】使用upper或者ucase函数将字符串中所有字母字符转换为大写,SQL语句如下:
mysql> select upper('black'),ucase('BLacK'); | |
---|---|
upper('black') | ucase('BLacK') |
BLACK | BLACK |
(5)获取指定长度的字符串的函数left(s,n)和right(s,n)。
1.left(s,n)
【例】使用left函数返回字符串中左边的字符,SQL语句如下:
mysql> select left('football',5); |
---|
left('football',5) |
footb |
1 row in set (0.00 sec)
2.right(s,n)
【例】使用right函数返回字符串str最右边n个字符,SQL语句如下:
mysql> select right ('football',4); |
---|
right ('football',4) |
ball |
1 row in set (0.00 sec)
(6)填充字符串的函数LPAD(s1,len,s2)和RPAD(s1,len,s2)。
1.LPAD(s1,;en,s2)
【例】使用LPAD函数对字符串进行填充操作,SQL语句如下:
mysql> select lpad('hello',4,'??'),lpad('hello',10,'??'); | |
---|---|
lpad('hello',4,'??') | lpad('hello',10,'??') |
hell | ?????hello |
1 row in set (0.00 sec)
2.RPAD(s1,len,s2)
mysql> select rpad('hello',4,'?'),rpad('hello',10,'?'); | |
---|---|
rpad('hello',4,'?') | rpad('hello',10,'?') |
hell | hello????? |
1 row in set (0.00 sec)
(7)删除空格的函数LTRIM(s)、RTRIM(s)和TRIM(s)。
1.LTRIM(s)
【例】使用LTRIM函数删除字符串左边的空格,SQL语句如下:
mysql> select '( book )',
-> concat('(',ltrim(' book '),')');
( book ) | concat('(',ltrim(' book '),')') |
---|---|
( book ) | (book ) |
1 row in set (0.05 sec)
2.RTRIM(s)
【例】使用RTRIM函数删除字符串右边的空格,SQL语句如下:
mysql> select '( book )',concat('(',rtrim(' book '),')'); | |
---|---|
( book ) | concat('(',rtrim(' book '),')') |
( book ) | ( book) |
1 row in set (0.05 sec)
3.TRIM(s)
【例】使用TRIM函数删除字符串两侧的空格,SQL语句如下:
mysql> select '( book )',concat('(',trim(' book '),')'); | |
---|---|
( book ) | concat('(',trim(' book '),')') |
( book ) | (book) |
1 row in set (0.05 sec)
(8)删除指定字符串的函数TRIM(s1 from s)。
【例】使用TRIM(s1 from s)函数删除字符串中两端指定的字符,SQL语句如下:
mysql> select trim('xy' from 'xyxboxyokxxyxy'); |
---|
trim('xy' from 'xyxboxyokxxyxy') |
xboxyokx |
1 row in set (0.00 sec)
(9)重复生成字符串的函数repeat(s,n)。
【例】使用repeat函数重复生成相同的字符串,SQL语句如下:
mysql> select repeat('mysql',3); |
---|
repeat('mysql',3) |
mysqlmysqlmysql |
1 row in set (0.00 sec)
(10)空格函数SPACE(n)和替换函数REPLA(s,s1,s2)。
1.space(n)
【例】使用space函数生成由空格组成的字符串,SQL语句如下:
mysql> select concat('(',space(6),')'); |
---|
concat('(',space(6),')') |
( ) |
1 row in set (0.00 sec)
2.replace(s,s1,s2)
【例】使用replace函数进行字符串替代操作,SQL语句如下:
mysql> select replace('xxx.mysql.con','x','w'); |
---|
replace('xxx.mysql.con','x','w') |
www.mysql.con |
1 row in set (0.00 sec)
(11)比较字符串大小的函数STRCMP(s1,s2)。
若s1和s2相同,返回0;
若s1<s2,返回-1;
若s1>s2,返回1
【例】使用strcmp函数比较字符串大小,SQL语句如下:
mysql> select strcmp('txt','txt2'),
-> strcmp('txt2','txt'),
-> strcmp('txt','txt');
strcmp('txt','txt2') | strcmp('txt2','txt') | strcmp('txt','txt') |
---|---|---|
-1 | 1 | 0 |
1 row in set (0.00 sec)
(12)获取子串的函数SUBSTRING(s,n,len)和MID(s,n,len)。
1.substring(s,n,len)
【例】使用substring函数获取指定位置处的子字符串,SQL语句如下:
mysql> select substring('breakfast',5) as col1,
-> substring('breakfast',5,3) as col2,
-> substring('breakfast',-3) as col3,
-> substring('breakfast',-5,3) as col4;
col1 | col2 | col3 | col4 |
---|---|---|---|
kfast | kfa | ast | kfa |
1 row in set (0.00 sec)
2.mid(s,n,len)
【例】使用mid()函数获取指定位置处的子字符串,SQL语句如下:
mysql> select mid('breakfast',5) as coll,
-> mid('breakfast',5,3) as col2,
-> mid('lunch',-3) as col3,
-> mid('lunch',-5,3) as col4;
coll | col2 | col3 | col4 |
---|---|---|---|
kfast | kfa | nch | lun |
1 row in set (0.00 sec)
(13)匹配子串开始位置的函数。
【例】使用locate、position、instr函数查找字符串中指定子字符串的开始位置,SQL语句如下:
mysql> select
-> locate('ball','football'),
-> position('ball' in 'football'),
-> instr('football','ball');
locate('ball','football') | position('ball' in 'football') | instr('football','ball') |
---|---|---|
5 | 5 | 5 |
1 row in set (0.00 sec)
(14)字符串逆序的函数REVERSE(s)。
【例】使用reverse函数反转字符串,SQL语句如下:
mysql> select reverse('abc'); |
---|
reverse('abc') |
cba |
1 row in set (0.00 sec)
(15)返回指定位置的字符串的函数。
【例】使用elt函数返回指定位置字符串,SQL语句如下:
mysql> select elt(3,'1st','2nd','3rd'),elt(3,'net','os'); | |
---|---|
elt(3,'1st','2nd','3rd') | elt(3,'net','os') |
3rd | NULL |
1 row in set (0.00 sec)
(16)返回指定字符串位置的函数FIELD(s,s1,s2)。
返回第一个字符在列表中第一次出现的位置。
【例】使用field函数返回指定字符串第一次出现的位置,SQL语句如下:
mysql> select
-> field('Hi','hihi','Hey','Hi','bas') as col1,
-> field('Hi','Hey','Lo','Hilo','foo') as col2;
col1 | col2 |
---|---|
3 | 0 |
1 row in set (0.00 sec)
(17)返回子串位置的函数FIND_IN_SET(S1,S2)。
find_in_set()函数和field()函数格式不同,但作用类似,都可以返回指定字符串在字符串列表中的位置。
【例】使用find_in_set()函数返回子字符串在字符串列表中的位置,SQL语句如下:
mysql> select find_in_set('Hi','hihi,Hey,Hi,bas'); |
---|
find_in_set('Hi','hihi,Hey,Hi,bas') |
3 |
1 row in set (0.00 sec)
(18)选取字符串的函数MAKE_SET(x,s1,s2)。
【例】使用make_set根据二进制位选取指定字符串,SQL语句如下:
mysql> select make_set(1,'a','b','c') as col1,
-> make_set(1 |4,'hello','nice','word') as col2,
-> make_set(1 |4,'hello','nice',null,'world') as col3,
-> make_set(0,'a','b','c') as col4;
col1 | col2 | col3 | col4 |
---|---|---|---|
a | hello,word | hello |
1 row in set (0.00 sec)
1的二进制是0001,4的二进制是0100,1与4进行或操作之后的二进制为0101,从右到左第1位和第3位均为1。
make_set(1,‘a’,‘b’,‘c’)返回第1个字符串;make_set(1 | 4,‘hello’,‘nice’,‘world’)返回从左端开始第1个和第3个字符串组成的字符串。
null不会添加到结果中,因此make_set(1 | 4,‘hello’,‘nice’,null,‘world’)只返回第一个字符串’hello’。
make_set(0,‘a’,‘b’,‘c’)返回空字符串。