您现在的位置是:网站首页> 编程资料编程资料

mysql字符串函数详细汇总_Mysql_

2023-05-26 426人已围观

简介 mysql字符串函数详细汇总_Mysql_

前言

字符串函数主要用来处理数据库中的字符串数据。​​mysql​​中的字符串函数有计算字符串长度函数、字符串合并函数、字符串替换函数、字符串比较函数、查找指定字符串位置函数等。

计算字符串字符数的函数

​CHAR_LENGTH(str)​​​函数计算字符串​​str​​所包含的字符个数。一个多字节字符算作一个单字符。

mysql> select char_length('date'), char_length('yunweijia'), char_length('运维家'); +---------------------+--------------------------+--------------------------+ | char_length('date') | char_length('yunweijia') | char_length('运维家') | +---------------------+--------------------------+--------------------------+ | 4 | 9 | 3 | +---------------------+--------------------------+--------------------------+ 1 row in set (0.00 sec) mysql>

计算字符串长度的函数

​LENGTH(str)​​​返回值为字符串的字节长度,使用​​utf8​​编码字符集时,一个汉字是三字节,一个数字或者字母算1字节;

mysql> select length('date'), length('yunweijia'), length('运维家'); +----------------+---------------------+---------------------+ | length('date') | length('yunweijia') | length('运维家') | +----------------+---------------------+---------------------+ | 4 | 9 | 9 | +----------------+---------------------+---------------------+ 1 row in set (0.00 sec) mysql>

合并字符串函数CONCAT(s1,s2,...)、CONCAT_WS(x,s1,s2,...)

​concat(s1,s2,...)​​返回结果为连接参数产生的字符串,或许有一个或多个参数。

如果有一个参数为​​null​​​,则返回值为​​null​​。

如果所有参数均为非二进制字符串,则结果为非二进制字符串。

如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。

mysql> select concat('mysql 8.0', 'yunweijia'), concat('heihei', null, '666'); +----------------------------------+-------------------------------+ | concat('mysql 8.0', 'yunweijia') | concat('heihei', null, '666') | +----------------------------------+-------------------------------+ | mysql 8.0yunweijia | NULL | +----------------------------------+-------------------------------+ 1 row in set (0.00 sec) mysql>

​concat_ws(x,s1,s2,...)​​​中,​​x​​是分隔符,分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其他参数。

如果分隔符是​​null​​​,则结果为​​null​​。该函数会忽略任何分隔符后面的​​null​​值

mysql> select concat_ws('-', 'mysql', '8.0', 'ywj'), concat_ws('@', 'one', null, 'two'); +---------------------------------------+------------------------------------+ | concat_ws('-', 'mysql', '8.0', 'ywj') | concat_ws('@', 'one', null, 'two') | +---------------------------------------+------------------------------------+ | mysql-8.0-ywj | one@two | +---------------------------------------+------------------------------------+ 1 row in set (0.00 sec) mysql>

替换字符串的函数INSERT(s1,x,len,s2)

​insert(s1,x,len,s2)​​​返回字符串​​s1​​​,其子字符串起始于​​x​​​位置和被字符串​​s2​​​取代的​​len​​​字符。如果​​x​​​超过字符串长度,则返回值为原始字符串。假如​​len​​​的长度大于其他字符串的长度,则从位置​​x​​​开始替换。若任何一个参数为​​null​​​,则返回值为​​null​​。

mysql> select insert('yunweijia', 2, 3, 'aaaaaaaa') as coll, insert('yunweijia', -1, 3, 'bbbbbbbb') as coll2, insert('yunweijia', 2, 99, 'ccccccccc') as coll3; +----------------+-----------+------------+ | coll | coll2 | coll3 | +----------------+-----------+------------+ | yaaaaaaaaeijia | yunweijia | yccccccccc | +----------------+-----------+------------+ 1 row in set (0.00 sec) mysql>

第一个函数​​insert('yunweijia', 2, 3, 'aaaaaaaa')​​​将​​yunweijia​​​第二个字符开始长度为3的字符串,替换成​​aaaaaaaa​​;

第二个函数​​insert('yunweijia', -1, 3, 'bbbbbbbb')​​中由于-1超出了字符串长度,直接返回了原字符串;

第三个函数​​insert('yunweijia', 2, 99, 'ccccccccc')​​​中由于替换长度99,超出了字符串原本长度,所以从第二个字符开始,截取后面所有的字符,并替换为指定字符​​ccccccccc​​。

字母大小写转换函数

大写转小写

​lower(str)​​​或者​​lcase(str)​​​可以将字符串​​str​​中的字母字符全部转换成小写字母。

mysql> select lower('YUNweiJIA'), lcase('YUNweiJIA'); +--------------------+--------------------+ | lower('YUNweiJIA') | lcase('YUNweiJIA') | +--------------------+--------------------+ | yunweijia | yunweijia | +--------------------+--------------------+ 1 row in set (0.00 sec) mysql>

小写转大写

​upper(str)​​​或者​​ucase(str)​​​可以将字符串​​str​​中的字母字符全部转换成大写字母。

mysql> select upper('yunWEIjia'), ucase('yunWEIjia'); +--------------------+--------------------+ | upper('yunWEIjia') | ucase('yunWEIjia') | +--------------------+--------------------+ | YUNWEIJIA | YUNWEIJIA | +--------------------+--------------------+ 1 row in set (0.00 sec) mysql>

获取指定长度的字符串的函数LEFT(s,n)和RIGHT(s,n)

​left(s,n)​​​返回字符串​​s​​​开始的最左边的​​n​​个字符。

mysql> select left('yunweijia', 5); +----------------------+ | left('yunweijia', 5) | +----------------------+ | yunwe | +----------------------+ 1 row in set (0.00 sec) mysql>

​right(s,n)​​​返回字符串​​s​​​开始的最右边的​​n​​个字符。

mysql> select right('yunweijia', 5); +-----------------------+ | right('yunweijia', 5) | +-----------------------+ | eijia | +-----------------------+ 1 row in set (0.00 sec) mysql>

填充字符串的函数LPAD(s1,len,s2)和RPAD(s1,len,s2)

​lpad(s1,len,s2)​​​返回字符串​​s1​​​,其左边由字符串​​s2​​​填补到​​len​​字符长度。假如​​s1​​的长度大于​​len​​,则返回值被缩短至​​len​​字符。

mysql> select lpad('yunweijia', 4, '@#'), lpad('yunweijia', 20, '@#'); +----------------------------+-----------------------------+ | lpad('yunweijia', 4, '@#') | lpad('yunweijia', 20, '@#') | +----------------------------+-----------------------------+ | yunw | @#@#@#@#@#@yunweijia | +----------------------------+-----------------------------+ 1 row in set (0.00 sec) mysql>

由于字符串​​yunweijia​​长度大于4,所以不仅不需要填充,反而需要截取至从左开始4位字符的字符串。

​RPAD(s1,len,s2)​​​返回字符串​​s1​​​,其右边被字符串​​s2​​​填补至​​len​​​字符长度。假如字符串​​s1​​​的长度大于​​len​​​,则返回值被缩短到​​len​​字符长度。

mysql> select rpad('yunweijia', 4, '@#'), rpad('yunweijia', 20, '@#'); +----------------------------+-----------------------------+ | rpad('yunweijia', 4, '@#') | rpad('yunweijia', 20, '@#') | +----------------------------+-----------------------------+ | yunw | yunweijia@#@#@#@#@#@ | +----------------------------+-----------------------------+ 1 row in set (0.00 sec) mysql>

由于字符串​​yunweijia​​长度大于4,所以不仅不需要填充,反而需要截取至从左开始4位字符的字符串。

删除空格的函数LTRIM(s)、RTRIM(s)和TRIM(s)

​ltrim(s)​​​返回字符串​​s​​,字符串左侧空格字符被删除;

mysql> select '( yunweijia )', concat('(',ltrim(' yunweijia '),')'); +-----------------+----------------------------------------+ | ( yunweijia ) | concat('(',ltrim(' yunweijia '),')') | +-----------------+----------------------------------------+ | ( yunweijia ) | (yunweijia ) | +-----------------+----------------------------------------+ 1 row in set (0.00 sec) mysql>

​rtrim(s)​​​返回字符串​​s​​,字符串右侧空格字符被删除;

-六神源码网