MySQL教程61-MySQL 字符串函数

网友投稿 666 2022-09-07

MySQL教程61-MySQL 字符串函数

MySQL教程61-MySQL 字符串函数

LENGTH函数:获取字符串长度

​​MySQL​​ LENGTH(str) 函数的返回值为字符串的字节长度,使用 uft8(UNICODE 的一种变长字符编码,又称万国码)编码字符集时,一个汉字是 3 个字节,一个数字或字母是一个字节。

【实例】使用 LENGTH 函数计算字符串长度,输入的 SQL 语句和执行结果如下所示。

mysql> SELECT LENGTH('name'),LENGTH('数据库');+----------------+---------------------+|LENGTH('name') | LENGTH('数据库') |+----------------+---------------------+| 4 | 9 |+----------------+---------------------+1 row in set (0.04

View Code

由运行结果可以看到,一个汉字是 3 个字节,“数据库”字符串占 9 个字节。英文字符的个数和所占的字节相同,一个字符占 1 个字节。

CHAR_LENGTH函数:获取字符串长度

和length函数的区别是, char_length函数单位为字符,不管汉字还是数字或者是字母都算是一个字符。

【实例】使用 char_length函数计算字符串长度,输入的 SQL 语句和执行结果如下所示。

mysql> SELECT LENGTH('name'),LENGTH('数据库'),char_length('name'), char_length('数据库');+----------------+---------------------+---------------------+--------------------------+| LENGTH('name') | LENGTH('数据库') | char_length('name') | char_length('数据库') |+----------------+---------------------+---------------------+--------------------------+| 4 | 9 | 4 | 3 |+----------------+---------------------+---------------------+--------------------------+1 row in set (0.00

View Code

CONCAT函数:字符串拼接

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

若有任何一个参数为 NULL,则返回值为 NULL。若所有参数均为非二进制字符串,则结果为非二进制字符串。若自变量中含有任一二进制字符串,则结果为一个二进制字符串。

【实例】使用 CONCAT 函数连接字符串,输入的 SQL 语句和执行结果如下所示。

mysql> SELECT CONCAT('MySQL','5.7'),CONCAT('MySQL',NULL);+-----------------------+----------------------+| CONCAT('MySQL','5.7') | CONCAT('MySQL',NULL) |+-----------------------+----------------------+| MySQL5.7 | NULL |+-----------------------+----------------------+1 row in set (0.03

View Code

由运行结果可知,CONCAT('MySQL','5.7') 返回两个字符串连接后的字符串;CONCAT(‘MySQL’,NULL) 中有一个参数为 NULL,因此返回结果为 NULL。

CONCAT_WS函数:使用指定分隔符的字符串拼接

语法:CONCAT_WS(separator, str1, str2…), 使用separator连接str1、str2…,如:执行​​SELECT CONCAT_WS(',','a','b','c')​​​将会输出​​a,b,c​​

注意:   1. 若分隔符为NULL,则结果为NULL,如:执行​​​SELECT CONCAT_WS(NULL,'a','b','c')​​​将会输出​​NULL​​​   2. 若字符串中存在NULL,则会忽略该字符,如:执行执行​​​SELECT CONCAT_WS(',','a',NULL,'c')​​​将会输出​​a,c​​

【实例】使用 CONCAT_WS函数连接字符串,输入的 SQL 语句和执行结果如下所示。

mysql> SELECT CONCAT_WS(NULL,'a','b','c'), CONCAT_WS(',','a',NULL,'c'), CONCAT_WS('-','a', 'b', 'c');+-----------------------------+-----------------------------+------------------------------+| CONCAT_WS(NULL,'a','b','c') | CONCAT_WS(',','a',NULL,'c') | CONCAT_WS('-','a', 'b', 'c') |+-----------------------------+-----------------------------+------------------------------+| NULL | a,c | a-b-c |+-----------------------------+-----------------------------+------------------------------+1 row in set (0.04

View Code

GROUP_CONCAT函数:连接指定列字符串

语法:GROUP_CONCAT([DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator ‘分隔符’])

说明: 将指定列连接起来

【实例】, 例如表temp中name列数据如下:

mysql> select * from temp;+------+| num |+------+| 64 || 11 || 22 |+------+3 rows in set (0.00

View Code

然后使用GROUP_CONCAT函数连接name列, 指定连接符为'-'

mysql> select group_concat(num separator '-') from temp;+---------------------------------+| group_concat(num separator '-') |+---------------------------------+| 64-11-22 |+---------------------------------+1 row in set (0.00

View Code

不指定连接符, 默认使用逗号连接, 如下:

mysql> select group_concat(num) from temp;+-------------------+| group_concat(num) |+-------------------+| 64,11,22 |+-------------------+1 row in set (0.33

View Code

INSERT函数:替换字符串

​​MySQL​​ 中替换字符串函数 INSERT(s1,x,len,s2) ,  字符串 s1中, 起始于 x 位置开始的len 个字符长的字符串, 用s2替换。

若 x 超过字符串长度,则返回值为原始字符串。假如 len 的长度大于其他字符串的长度,则从位置 x 开始替换。若任何一个参数为 NULL,则返回值为 NULL。

【实例】使用 INSERT 函数进行字符串替换操作,输入的 SQL 语句和执行结果如下所示。

mysql> SELECT INSERT('Football',2,4,'Play') AS col1, -> INSERT('Football',-1,4,'Play') AS col2, -> INSERT('Football',3,20,'Play') AS col3;+----------+----------+--------+| col1 | col2 | col3 |+----------+----------+--------+| FPlayall | Football | FoPlay |+----------+----------+--------+1 row in set (0.04

View Code

由执行结果可知:

第一个函数 INSERT('Football',2,4,'Play') 将“Football”从第 2 个字符开始长度为 4 的字符串替换为 Play,结果为“FPlayall”;第二个函数 ('Football',-1,4,'Play') 中的起始位置 -1 超出了字符串长度,直接返回原字符串;第三个函数 INSERT('Football',3,20,'Play') 替换长度超出了原字符串长度,则从第 3 个字符开始,截取后面所有的字符,并替换为指定字符 Play,结果为“FoPlay”。

LOWER函数:将字母转换成小写

​​MySQL​​ 中字母小写转换函数 LOWER(str) 可以将字符串 str 中的字母字符全部转换成小写。

【实例】使用 LOWER 函数将字符串中所有的字母字符转换为小写,输入的 SQL 语句和执行结果如下所示。

mysql> SELECT LOWER('BLUE'),LOWER('Blue');+---------------+---------------+| LOWER('BLUE') | LOWER('Blue') |+---------------+---------------+| blue | blue |+---------------+---------------+1 row in set (0.03

View Code

由结果可以看到,原来所有字母为大写的,全部转换为小写,如“BLUE”,转换之后为“blue”;大小写字母混合的字符串,小写不变,大写字母转换为小写字母,如“Blue”,转换之后为“bule”。

UPPER函数:将字母转换成大写

与函数LOWER相反作用....

LEFT函数:从左侧截取字符串

​​MySQL​​ 中的 LEFT(s,n) 函数返回字符串 s 最左边的 n 个字符。

【实例】使用 LEFT 函数返回字符串中左边的字符,输入的 SQL 语句和执行结果如下所示。

mysql> SELECT LEFT('MySQL',2);+-----------------+| LEFT('MySQL',2) |+-----------------+| My |+-----------------+1 row in set (0.04

View Code

由运行结果可知,返回字符串“MySQL”左边开始的长度为 2 的子字符串,结果为“My”。

RIGHT函数:从右侧截取字符串

与函数LEFT相反作用....

TRIM函数:删除空格

​​MySQL​​ 中删除空格函数 TRIM(s) 删除字符串 s 两侧的空格。

【实例】SELECT CONCAT('[',TRIM('mobile'),']');输入的 SQL 语句和执行结果如下所示。

mysql> SELECT '[ mobile ]',CONCAT('[',TRIM(' mobile '),']');+----------------+--------------------------------------+| [ mobile ] | CONCAT('[',TRIM(' mobile '),']') |+----------------+--------------------------------------+| [ mobile ] | [mobile] |+----------------+--------------------------------------+1 row in set (0.07

View Code

由执行结果可知,函数执行之后字符串“mobile”两边的空格被删除,结果为“mobile”。

REPLACE函数:字符串替换

​​MySQL​​ 中替换函数 REPLACE(s,s1,s2) 使用字符串 s2 替换字符串 s 中所有的字符串 s1。

【实例】使用 REPLACE 函数进行字符串替换操作,输入的 SQL 语句和执行过程如下所示。

mysql> SELECT REPLACE('aaa.mysql.com','a','w');+----------------------------------+| REPLACE('aaa.mysql.com','a','w') |+----------------------------------+| mysql.com |+----------------------------------+1 row in set (0.00

View Code

由运行结果可以看出,使用 REPLACE('aaa.mysql.com','a','w') 将“aaa.mysql.com”字符串的“a”字符替换为“w”字符,结果为“mysql.com”。

SUBSTRING函数:截取字符串

​​MySQL​​ 中获取子串函数 SUBSTRING(s,n,len) 带有 len 参数的格式,从字符串 s 返回一个长度同 len 字符相同的子字符串,起始于位置 n。

也可能对 n 使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的第 n 个字符,即倒数第 n 个字符,而不是字符串的开头位置。

【实例】使用 SUBSTRING 函数获取指定位置处的子字符串,输入的 SQL 语句和执行结果如下所示。

mysql> SELECT SUBSTRING('computer',3) AS col1, -> SUBSTRING('computer',3,4) AS col2, -> SUBSTRING('computer',-3) AS col3, -> SUBSTRING('computer',-5,3) AS col4;+--------+------+------+------+| col1 | col2 | col3 | col4 |+--------+------+------+------+| mputer | mput | ter | put |+--------+------+------+------+1 row in set (0.00

View Code

SUBSTRING('computer',3) 返回从第 3 个位置开始到字符串结尾的子字符串,结果为“mputer”;SUBSTRING('computer',3,4) 返回从第 3 个位置开始长度为 4 的子字符串,结果为“mput”;SUBSTRING(computer,-3) 返回从倒数第 3 个位置到字符串结尾的子字符串,结果为“ter”;SUBSTRING(computer,-5,3) 返回从倒数第 5 个位置开始长度为 3 的子字符串,结果为“put”。

REVERSE函数:反转字符串

​​MySQL​​ 中字符串逆序函数 REVERSE(s) 可以将字符串 s 反转,返回的字符串的顺序和 s 字符串的顺序相反。

【实例】使用 REVERSE 函数反转字符串,输入的 SQL 语句和执行过程如下所示。

mysql> SELECT REVERSE('hello');+------------------+| REVERSE('hello') |+------------------+| olleh |+------------------+1 row in set (0.00

View Code

由运行结果可以看出,字符串“hello”经过 REVERSE 函数处理之后所有字符顺序被反转,结果为“olleh”。

INSTR函数:发现指定的字符的位置

INSTR(STR,SUBSTR) 在一个字符串(STR)中搜索指定的字符(SUBSTR),返回发现指定的字符的位置(INDEX);

STR 被搜索的字符串 SUBSTR 希望搜索的字符串

在字符串STR里面,字符串SUBSTR出现的第一个位置(INDEX),INDEX是从1开始计算,如果没有找到就直接返回0,没有返回负数的情况。

mysql> SELECT INSTR("abcd",'b'), INSTR("abcd",'f');+-------------------+-------------------+| INSTR("abcd",'b') | INSTR("abcd",'f') |+-------------------+-------------------+| 2 | 0 |+-------------------+-------------------+1 row in set (0.00

View Code

LOCATE函数:发现指定的字符的位置

LOCATE(substr,str) , LOCATE(substr,str,pos)

第一个语法返回字符串 str中子字符串substr的第一个出现位置。第二个语法返回字符串 str中子字符串substr的第一个出现位置, 起始位置在pos。如若substr 不在str中,则返回值为0。

mysql> SELECT LOCATE('def', 'abcdef'), LOCATE('xdef', 'abcdef'), LOCATE('def', 'abcdefghdef', 6);+-------------------------+--------------------------+---------------------------------+| LOCATE('def', 'abcdef') | LOCATE('xdef', 'abcdef') | LOCATE('def', 'abcdefghdef', 6) |+-------------------------+--------------------------+---------------------------------+| 4 | 0 | 9 |+-------------------------+--------------------------+---------------------------------+1 row in set (0.00

View Code

POSITION函数:发现指定的字符的位置

POSITION(substr IN str)

返回子串 substr 在字符串 str 中第一次出现的位置。如果子串 substr 在 str 中不存在,返回值为 0

mysql> SELECT POSITION('def' in 'abcdef'), POSITION('xdef' in 'abcdef'), POSITION('def' in 'abcdefghdef');+-----------------------------+------------------------------+----------------------------------+| POSITION('def' in 'abcdef') | POSITION('xdef' in 'abcdef') | POSITION('def' in 'abcdefghdef') |+-----------------------------+------------------------------+----------------------------------+| 4 | 0 | 4 |+-----------------------------+------------------------------+----------------------------------+1 row in set (0.00

View Code

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Redis教程13-Pub/Sub(发布订阅)
下一篇:PHP新手中购物车实现的原理(php实现购物系统)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~