MySQL数据库中提供了许多字符串函数,如concat、left、right、substr、instr、substring等,使用相关函数截取字符串,截取小数点。

MySQL字符串截取函数还有 mid、substr等,其中,mid(), substr() 等价于 substring() 函数,substring() 的功能非常强大和灵活。

 

1. 查询字符串长度

MySQL 查询字符串的长度,主要有两个函数 length 和 char_length

两者的区别:

length:  返回字符串所占的字节数,计算字段的长度一个汉字是算三个字符,一个数字或字母算一个字符

char_length:  返回字符串所占的字符数,一个汉字算一个字符,即汉字、数字、字母等,都算是一个字符

 

一个英文或数字占一个字节,一个汉字占三个字符

MariaDB [mimvp]> select length('mimvp.com');
+---------------------+
| length('mimvp.com') |
+---------------------+
|                   9 |
+---------------------+

MariaDB [mimvp]> select length('米扑科技');
+------------------------+
| length('米扑科技')     |
+------------------------+
|                     12 |
+------------------------+

MariaDB [mimvp]> select length(123456);    
+----------------+
| length(123456) |
+----------------+
|              6 |
+----------------+

 

数据库的字段长度,对比 length 和 char_length

MariaDB [mimvp]> select name, length(name), char_length(name) from mimvp; 
+--------------+--------------+-------------------+
| name         | length(name) | char_length(name) |
+--------------+--------------+-------------------+
| 123456       |            6 |                 6 |
| mimvp.com    |            9 |                 9 |
| 米扑代理     |           12 |                 4 |
| 米扑导航     |           12 |                 4 |
| 米扑域名     |           12 |                 4 |
| 米扑财富     |           12 |                 4 |
+--------------+--------------+-------------------+

 

 

2. 数据库字段添加前缀、后缀 添加

添加前缀、后缀字符串,需要用到拼接字符串,函数为: concat(str1, str2, ...)

concat 返回多个参数连接后的结果字符串。

如果任何参数是NULL,返回NULL,可以有超过2个的参数,数字参数被变换为等价的字符串形式。

MariaDB [mimvp]> select concat('mimvp','.com',2016);
+-----------------------------+
| concat('mimvp','.com',2016) |
+-----------------------------+
| mimvp.com2016               |
+-----------------------------+

MariaDB [mimvp]> select concat('mimvp','.com','-2016');
+--------------------------------+
| concat('mimvp','.com','-2016') |
+--------------------------------+
| mimvp.com-2016                 |
+--------------------------------+

MariaDB [mimvp]> select concat('mimvp',null,'-2016'); 
+------------------------------+
| concat('mimvp',null,'-2016') |
+------------------------------+
| NULL                         |
+------------------------------+

 

示例1:以米扑代理、米扑导航等字段添加前缀 "米扑科技 - " 为例

MariaDB [mimvp]> update mimvp set name=concat('米扑科技 - ', name) where name like '米扑%';
Query OK, 4 rows affected (0.01 sec)

MariaDB [mimvp]> select * from mimvp;                        
+------+-----------------------------+------+
| id   | name                        | age  |
+------+-----------------------------+------+
|    1 | 123456                      |    2 |
|    2 | mimvp.com                   |    3 |
|    3 | 米扑科技 - 米扑代理         |    3 |
|    4 | 米扑科技 - 米扑导航         |    3 |
|    5 | 米扑科技 - 米扑域名         |    5 |
|    6 | 米扑科技 - 米扑财富         |    8 |
+------+-----------------------------+------+

 

示例2:以米扑代理、米扑导航等字段添加后缀 " - 2016" 为例

MariaDB [mimvp]> update mimvp set name=concat(name, ' - 2016') where name like '米扑%';                  
Query OK, 4 rows affected (0.01 sec)

MariaDB [mimvp]> select * from mimvp;                                                   
+------+------------------------------------+------+
| id   | name                               | age  |
+------+------------------------------------+------+
|    1 | 123456                             |    2 |
|    2 | mimvp.com                          |    3 |
|    3 | 米扑科技 - 米扑代理 - 2016         |    3 |
|    4 | 米扑科技 - 米扑导航 - 2016         |    3 |
|    5 | 米扑科技 - 米扑域名 - 2016         |    5 |
|    6 | 米扑科技 - 米扑财富 - 2016         |    8 |
+------+------------------------------------+------+

 

 

3. 数据库字段删除前缀、后缀删除

删除或截取字符串,有多个函数,如 left、right、substring、substr、mid

3.1 函数 left

left(str, len) 返回字符串str的最左面len个字符。

字符、汉字、数字,一个元素都占一个字符,即一个汉字不再算三个字符,切记!

MariaDB [mimvp]> select left('mimvp.com',5);
+---------------------+
| left('mimvp.com',5) |
+---------------------+
| mimvp               |
+---------------------+

MariaDB [mimvp]> select left('米扑科技 - 米扑代理 - 2016',3);
+----------------------------------------------+
| left('米扑科技 - 米扑代理 - 2016',3)         |
+----------------------------------------------+
| 米扑科                                       |
+----------------------------------------------+

MariaDB [mimvp]> select left('123456',3);                    
+------------------+
| left('123456',3) |
+------------------+
| 123              |
+------------------+

 

3.2 函数 right

right(str, len) 返回字符串str的最右面len个字符。

字符、汉字、数字,一个元素都占一个字符,即一个汉字不再算三个字符,切记!

MariaDB [mimvp]> select right('mimvp.com',5);
+----------------------+
| right('mimvp.com',5) |
+----------------------+
| p.com                |
+----------------------+

MariaDB [mimvp]> select right('米扑科技 - 米扑代理',3);           
+----------------------------------------+
| right('米扑科技 - 米扑代理',3)         |
+----------------------------------------+
| 扑代理                                 |
+----------------------------------------+

MariaDB [mimvp]> select right('123456',3);        
+-------------------+
| right('123456',3) |
+-------------------+
| 456               |
+-------------------+

 

3.3 函数 substring

substring(str, pos, len)

substring(str FROM pos FOR len)

mid(str, pos, len)

substr(str, pos, len)

从字符串str返回一个len个字符的子串,从位置pos开始(包含pos位置的字符)

pos起始位置从1开始算起,len为空则默认选择其后的全部子字符串。

其中,str FROM pos FOR len 使用FROM的变种形式是ANSI SQL92语法。

MariaDB [mimvp]> select substring('米扑科技 - 米扑代理 - 2016', 1, 4); 
+-------------------------------------------------------+
| substring('米扑科技 - 米扑代理 - 2016', 1, 4)         |
+-------------------------------------------------------+
| 米扑科技                                              |
+-------------------------------------------------------+

MariaDB [mimvp]> select substring('米扑科技 - 米扑代理 - 2016', 1);   
+----------------------------------------------------+
| substring('米扑科技 - 米扑代理 - 2016', 1)         |
+----------------------------------------------------+
| 米扑科技 - 米扑代理 - 2016                         |
+----------------------------------------------------+

MariaDB [mimvp]> select substring('米扑科技 - 米扑代理 - 2016' from 1 for 4); 
+--------------------------------------------------------------+
| substring('米扑科技 - 米扑代理 - 2016' from 1 for 4)         |
+--------------------------------------------------------------+
| 米扑科技                                                     |
+--------------------------------------------------------------+

MariaDB [mimvp]> select substring('米扑科技 - 米扑代理 - 2016' from 1);      
+--------------------------------------------------------+
| substring('米扑科技 - 米扑代理 - 2016' from 1)         |
+--------------------------------------------------------+
| 米扑科技 - 米扑代理 - 2016                             |
+--------------------------------------------------------+

 

mid 和 substr 跟 substring 用法一样,把上述 substring 换成 mid 和 substr,结果一样

MariaDB [mimvp]> select substr('米扑科技 - 米扑代理 - 2016', 1, 4);   
+----------------------------------------------------+
| substr('米扑科技 - 米扑代理 - 2016', 1, 4)         |
+----------------------------------------------------+
| 米扑科技                                           |
+----------------------------------------------------+

MariaDB [mimvp]> select substr('米扑科技 - 米扑代理 - 2016', 1);
+-------------------------------------------------+
| substr('米扑科技 - 米扑代理 - 2016', 1)         |
+-------------------------------------------------+
| 米扑科技 - 米扑代理 - 2016                      |
+-------------------------------------------------+

MariaDB [mimvp]> select mid('米扑科技 - 米扑代理 - 2016', 1, 4);         
+-------------------------------------------------+
| mid('米扑科技 - 米扑代理 - 2016', 1, 4)         |
+-------------------------------------------------+
| 米扑科技                                        |
+-------------------------------------------------+

MariaDB [mimvp]> select mid('米扑科技 - 米扑代理 - 2016', 1);         
+----------------------------------------------+
| mid('米扑科技 - 米扑代理 - 2016', 1)         |
+----------------------------------------------+
| 米扑科技 - 米扑代理 - 2016                   |
+----------------------------------------------+

 

好了,介绍完了  left、right、substring、substr、mid 字符串截取,目的是为了进入正题:删除字段的前缀或后缀

MariaDB [mimvp]> select * from mimvp;
+------+------------------------------------+------+
| id   | name                               | age  |
+------+------------------------------------+------+
|    1 | 123456                             |    2 |
|    2 | mimvp.com                          |    3 |
|    3 | 米扑科技 - 米扑代理 - 2016         |    3 |
|    4 | 米扑科技 - 米扑导航 - 2016         |    3 |
|    5 | 米扑科技 - 米扑域名 - 2016         |    5 |
|    6 | 米扑科技 - 米扑财富 - 2016         |    8 |
+------+------------------------------------+------+

 

示例1:以米扑代理、米扑导航等字段删除前缀 "米扑科技 - " 为例

删除前缀,因为前缀长度是固定的,因此可以选择 right 或 substring 两种函数

但是,考虑到 right 截取右边的字符串时需要提前知道右边的字符串长度,在实际应用中一般是无法提前预知的

因此,米扑博客推荐删除前缀使用 substring,并须知一个汉字也算一个字符

MariaDB [mimvp]> update mimvp set name = substring(name, 8) where name like '米扑科技 - %';
Query OK, 4 rows affected (0.00 sec)

MariaDB [mimvp]> select * from mimvp;
+------+---------------------+------+
| id   | name                | age  |
+------+---------------------+------+
|    1 | 123456              |    2 |
|    2 | mimvp.com           |    3 |
|    3 | 米扑代理 - 2016     |    3 |
|    4 | 米扑导航 - 2016     |    3 |
|    5 | 米扑域名 - 2016     |    5 |
|    6 | 米扑财富 - 2016     |    8 |
+------+---------------------+------+

 

示例2:以米扑代理、米扑导航等字段删除后缀 " - 2016" 为例

删除后缀,我们是知道后缀字符串长度的,也可计算得到字符串总长度,因此再结合 left 截取字段左侧字符串即可

需要特别注意的是:

如果字段里包含了汉字,则一定需要使用 char_length 来计算字符的长度,不能使用 length

因为 char_length 把一个汉字当做一个字符,而 length 把一个汉字当做三个字符(字节)

MariaDB [mimvp]> select left(name, (char_length(name)-char_length(' - 2016'))) from mimvp where name like '% - 2016'; 
+--------------------------------------------------------+
| left(name, (char_length(name)-char_length(' - 2016'))) |
+--------------------------------------------------------+
| 米扑代理                                               |
| 米扑导航                                               |
| 米扑域名                                               |
| 米扑财富                                               |
+--------------------------------------------------------+

MariaDB [mimvp]> update mimvp set name = left(name, (char_length(name)-char_length(' - 2016'))) where name like '% - 2016';                      
Query OK, 4 rows affected (0.01 sec)

MariaDB [mimvp]> select * from mimvp;
+------+--------------+------+
| id   | name         | age  |
+------+--------------+------+
|    1 | 123456       |    2 |
|    2 | mimvp.com    |    3 |
|    3 | 米扑代理     |    3 |
|    4 | 米扑导航     |    3 |
|    5 | 米扑域名     |    5 |
|    6 | 米扑财富     |    8 |
+------+--------------+------+

 

 

4. 字段的字符串替换替换

字符串的替换,可以使用 replace 函数

replace(str, src_str, desc_str)   返回字符串str,其字符串 src_str 的所有出现由字符串 desc_str 代替。

MariaDB [mimvp]> select replace('mimvp.com', 'mimvp', 'mimji');
+----------------------------------------+
| replace('mimvp.com', 'mimvp', 'mimji') |
+----------------------------------------+
| mimji.com                              |
+----------------------------------------+

 

示例:把米扑代理、米扑导航等字段值里的 "米扑" 替换成 "米积"

MariaDB [mimvp]> update mimvp set name = replace(name, '米扑', '米积') where name like '米扑%';    
Query OK, 4 rows affected (0.01 sec)
Rows matched: 4  Changed: 4  Warnings: 0

MariaDB [mimvp]> select * from mimvp;                                                          
+------+--------------+------+
| id   | name         | age  |
+------+--------------+------+
|    1 | 123456       |    2 |
|    2 | mimvp.com    |    3 |
|    3 | 米积代理     |    3 |
|    4 | 米积导航     |    3 |
|    5 | 米积域名     |    5 |
|    6 | 米积财富     |    8 |
+------+--------------+------+

字符串的替换,也可间接用作删除字段的前缀、后缀

 

 

5. MySQL 常用函数

1)ASCII(str) 

返回字符串str的最左面字符的ASCII代码值。

如果str是空字符串,返回0,如果str是NULL,返回NULL。

MariaDB [mimvp]> select ascii(0);
48

MariaDB [mimvp]> select ascii('0');
48

MariaDB [mimvp]> select ascii('a');
97

MariaDB [mimvp]> select ascii('A');
65

MariaDB [mimvp]> select ascii(''); 
0

MariaDB [mimvp]> select ascii(null);
NULL

 

2)ORD(str)

如果字符串str最左面字符是一个多字节字符,通过以格式((first byte ASCII code)*256+(second byte ASCII code))[*256+third byte ASCII code...]返回字符的ASCII代码值来返回多字节字符代码。如果最左面的字符不是一个多字节字符,返回与ASCII()函数返回的相同值。

MariaDB [mimvp]> select ascii(0), ord(0);
+----------+--------+
| ascii(0) | ord(0) |
+----------+--------+
|       48 |     48 |
+----------+--------+

MariaDB [mimvp]> select ascii(''), ord('');
+-----------+---------+
| ascii('') | ord('') |
+-----------+---------+
|         0 |       0 |
+-----------+---------+

MariaDB [mimvp]> select ascii(null), ord(null);  
+-------------+-----------+
| ascii(null) | ord(null) |
+-------------+-----------+
|        NULL |      NULL |
+-------------+-----------+

MariaDB [mimvp]> select ascii('abc'), ord('abc');    
+--------------+------------+
| ascii('abc') | ord('abc') |
+--------------+------------+
|           97 |         97 |
+--------------+------------+

MariaDB [mimvp]> select ascii('米扑'), ord('米扑');  
+-----------------+---------------+
| ascii('米扑')   | ord('米扑')   |
+-----------------+---------------+
|             231 |      15184307 |
+-----------------+---------------+

 

3)CONV(N, from_base, to_base)

在不同的数字基之间变换数字。返回数字N的字符串数字,从from_base基变换为to_base基,如果任何参数是NULL,返回NULL。

参数N解释为一个整数,但是可以指定为一个整数或一个字符串。

最小基是2且最大的基是36,CONV以64位点精度工作。

如果to_base是一个负数,N被认为是一个有符号数,否则,N被当作无符号数。

MariaDB [mimvp]> select conv('a', 16, 10), conv('a', 16, 8), conv('a', 16, 2), conv('a', 16, 1);                  
+-------------------+------------------+------------------+------------------+
| conv('a', 16, 10) | conv('a', 16, 8) | conv('a', 16, 2) | conv('a', 16, 1) |
+-------------------+------------------+------------------+------------------+
| 10                | 12               | 1010             | NULL             |
+-------------------+------------------+------------------+------------------+

MariaDB [mimvp]> select conv(100, 10, 16), conv(100, 10, 8), conv(100, 10, 2), conv(100, 10, 1);                 
+-------------------+------------------+------------------+------------------+
| conv(100, 10, 16) | conv(100, 10, 8) | conv(100, 10, 2) | conv(100, 10, 1) |
+-------------------+------------------+------------------+------------------+
| 64                | 144              | 1100100          | NULL             |
+-------------------+------------------+------------------+------------------+

 

4)BIN(N)、OCT(N)、HEX(N)

BIN(N)  返回二进制值N的一个字符串表示,在此N是一个长整数(BIGINT)数字,这等价于CONV(N,10,2)。如果N是NULL,返回NULL。

OCT(N) 返回八进制值N的一个字符串的表示,在此N是一个长整型数字,这等价于CONV(N,10,8)。如果N是NULL,返回NULL。

HEX(N) 返回十六进制值N一个字符串的表示,在此N是一个长整型(BIGINT)数字,这等价于CONV(N,10,16)。如果N是NULL,返回NULL。

MariaDB [mimvp]> select bin(100), oct(100), hex(100);
+----------+----------+----------+
| bin(100) | oct(100) | hex(100) |
+----------+----------+----------+
| 1100100  | 144      | 64       |
+----------+----------+----------+

 

5)CHAR(N, ...)

CHAR()将参数解释为整数,若有小数则四舍五入,并且返回由这些整数的ASCII代码字符组成的一个字符串。NULL值被跳过。

MariaDB [mimvp]> select char(48, 65, 97, 100);  
+-----------------------+
| char(48, 65, 97, 100) |
+-----------------------+
| 0Aad                  |
+-----------------------+

MariaDB [mimvp]> select char(48.5, 65.4, 97.8, null);
+------------------------------+
| char(48.5, 65.4, 97.8, null) |
+------------------------------+
| 1Ab                          |
+------------------------------+

 

6)LENGTH(str)、CHAR_LENGTH(str)、CHARACTER_LENGTH(str)、OCTET_LENGTH(str)

返回字符串str的长度,其区别如下:

length:  返回字符串所占的字节数,计算字段的长度一个汉字是算三个字符,一个数字或字母算一个字符

char_length:  返回字符串所占的字符数,一个汉字算一个字符,即汉字、数字、字母等,都算是一个字符

LENGTH(str)、OCTET_LENGTH(str):两者都计算字节数,一个汉字算三个字节

CHAR_LENGTH(str)、CHARACTER_LENGTH(str):两者都计算字符数,一个汉字算一个字符

MariaDB [mimvp]> select length('mimvp'), char_length('mimvp'), character_length('mimvp'), octet_length('mimvp');
+-----------------+----------------------+---------------------------+-----------------------+
| length('mimvp') | char_length('mimvp') | character_length('mimvp') | octet_length('mimvp') |
+-----------------+----------------------+---------------------------+-----------------------+
|               5 |                    5 |                         5 |                     5 |
+-----------------+----------------------+---------------------------+-----------------------+


MariaDB [mimvp]> select length('mimvp-米扑科技'), char_length('mimvp-米扑科技'), character_length('mimvp-米扑科技'), octet_length('mimvp-米扑科技');
+------------------------------+-----------------------------------+----------------------------------------+------------------------------------+
| length('mimvp-米扑科技')     | char_length('mimvp-米扑科技')     | character_length('mimvp-米扑科技')     | octet_length('mimvp-米扑科技')     |
+------------------------------+-----------------------------------+----------------------------------------+------------------------------------+
|                           18 |                                10 |                                     10 |                                 18 |
+------------------------------+-----------------------------------+----------------------------------------+------------------------------------+

 

7)LOCATE(substr, str, pos)

返回子串substr在字符串str第一个出现的位置,从位置pos开始。如果substr不是在str里面,返回0。

MariaDB [mimvp]> select locate('mvp','mimvp-mvp'), locate('mvp','mimvp-mvp',4), locate('mip','mimvp');    
+---------------------------+-----------------------------+-----------------------+
| locate('mvp','mimvp-mvp') | locate('mvp','mimvp-mvp',4) | locate('mip','mimvp') |
+---------------------------+-----------------------------+-----------------------+
|                         3 |                           7 |                     0 |
+---------------------------+-----------------------------+-----------------------+

 

8)INSTR(str, substr)

返回子串substr在字符串str中的第一个出现的位置,其没有pos参数。这与有2个参数形式的LOCATE()相同,除了参数被颠倒。

MariaDB [mimvp]> select instr('mimvp-mvp','mvp'), instr('mimvp','mip');                           
+--------------------------+----------------------+
| instr('mimvp-mvp','mvp') | instr('mimvp','mip') |
+--------------------------+----------------------+
|                        3 |                    0 |
+--------------------------+----------------------+

 

9)LPAD(str, len, padstr) 、RPAD(str, len, padstr)

LPAD(str, len, padstr) 返回字符串str,左面用字符串padstr填补直到str是len个字符长。

RPAD(str, len, padstr) 返回字符串str,右面用字符串padstr填补直到str是len个字符长。 

此函数,对于固定长度的字段比较有用。

MariaDB [mimvp]> select lpad('mi', 5, '0'), rpad('mi', 5, '0');
+--------------------+--------------------+
| lpad('mi', 5, '0') | rpad('mi', 5, '0') |
+--------------------+--------------------+
| 000mi              | mi000              |
+--------------------+--------------------+

 

10)SUBSTRING(str, pos, len)、SUBSTRING_INDEX(str, delim, count)

substring 在上文已介绍,这里重点介绍 SUBSTRING_INDEX

SUBSTRING(str, pos, len)  从字符串str返回一个len个字符的子串,从位置pos开始。

SUBSTRING(str, pos)  从字符串str的起始位置pos返回一个子串。

SUBSTRING_INDEX(str, delim, count) 返回从字符串str的第count个出现的分隔符delim之后的子串。如果count是正数,返回最后的分隔符到左边(从左边数) 的所有字符。如果count是负数,返回最后的分隔符到右边的所有字符(从右边数)。 

MariaDB [mimvp]> select substring_index('www.mimvp.com', '.', 2), substring_index('www.mimvp.com', '.', -2);
+------------------------------------------+-------------------------------------------+
| substring_index('www.mimvp.com', '.', 2) | substring_index('www.mimvp.com', '.', -2) |
+------------------------------------------+-------------------------------------------+
| www.mimvp                                | mimvp.com                                 |
+------------------------------------------+-------------------------------------------+

 

11)TRIM、LTRIM、RTRIM

TRIM([BOTH | LEADING | TRAILING] [remstr] FROM] str)   返回字符串str,其所有remstr前缀或后缀被删除了。如果没有修饰符BOTH、LEADING或TRAILING给出,BOTH被假定。如果remstr没被指定,默认为空格被删除。

MariaDB [mimvp]> select trim(' mimvp - tech '), trim('x' from ' xx mimvp xx'), trim('x' from 'xxmimvpxx');
+------------------------+-------------------------------+----------------------------+
| trim(' mimvp - tech ') | trim('x' from ' xx mimvp xx') | trim('x' from 'xxmimvpxx') |
+------------------------+-------------------------------+----------------------------+
| mimvp - tech           |  xx mimvp                     | mimvp                      |
+------------------------+-------------------------------+----------------------------+

MariaDB [mimvp]> select trim(leading 'x' from 'xxxmimvpxx'), trim(both 'x' from 'xxxmimvpxx'), trim(trailing 'x' from 'xxxmimvpxx');   
+-------------------------------------+----------------------------------+--------------------------------------+
| trim(leading 'x' from 'xxxmimvpxx') | trim(both 'x' from 'xxxmimvpxx') | trim(trailing 'x' from 'xxxmimvpxx') |
+-------------------------------------+----------------------------------+--------------------------------------+
| mimvpxx                             | mimvp                            | xxxmimvp                             |
+-------------------------------------+----------------------------------+--------------------------------------+

 

12)REVERSE(str) 

返回颠倒字符顺序的字符串str。

MariaDB [mimvp]> select reverse('mimvp'), reverse(123456), reverse('米扑科技');
+------------------+-----------------+-------------------------+
| reverse('mimvp') | reverse(123456) | reverse('米扑科技')     |
+------------------+-----------------+-------------------------+
| pvmim            | 654321          | 技科扑米                |
+------------------+-----------------+-------------------------+

 

 

MySQL 更多的字符串函数

1)SPACE(N) 

返回由N个空格字符组成的一个字符串。

 

2)REPEAT(str, count) 

返回由重复countTimes次的字符串str组成的一个字符串。如果count <= 0,返回一个空字符串。如果str或count是NULL,返回NULL。 

 

3)INSERT(str, pos, len, newstr) 

返回字符串str,在位置pos起始的子串且len个字符长得子串由字符串newstr代替。 

MariaDB [mimvp]> select space(5), repeat('mimvp', 3), insert('mimvp.com', 4, 2, 'ji'), replace('mimvp.com', 'mimvp', 'mimji');
+----------+--------------------+---------------------------------+----------------------------------------+
| space(5) | repeat('mimvp', 3) | insert('mimvp.com', 4, 2, 'ji') | replace('mimvp.com', 'mimvp', 'mimji') |
+----------+--------------------+---------------------------------+----------------------------------------+
|          | mimvpmimvpmimvp    | mimji.com                       | mimji.com                              |
+----------+--------------------+---------------------------------+----------------------------------------+

 

4)ELT(N, str1, str2, str3,...) 

如果N= 1,返回str1,如果N= 2,返回str2,等等。如果N小于1或大于参数个数,返回NULL。ELT()是FIELD()反运算。

 

5)FIELD(str,str1, str2, str3,...) 

返回str在str1, str2, str3, ...清单的索引。如果str没找到,返回0。FIELD()是ELT()反运算。

MariaDB [mimvp]> select elt(3, 'mi', 'mvp', 'mimvp'), field('mvp', 'mi', 'mvp', 'mimvp') ;                    
+------------------------------+------------------------------------+
| elt(3, 'mi', 'mvp', 'mimvp') | field('mvp', 'mi', 'mvp', 'mimvp') |
+------------------------------+------------------------------------+
| mimvp                        |                                  2 |
+------------------------------+------------------------------------+

 

6)FIND_IN_SET(str, strlist) 

如果字符串str在由N子串组成的表strlist之中,返回一个1到N的值。一个字符串表是被“,”分隔的子串组成的一个字符串。如果第一个参数是一个常数字符串并且第二个参数是一种类型为SET的列,FIND_IN_SET()函数被优化而使用位运算!如果str不是在strlist里面或如果strlist是空字符串,返回0。如果任何一个参数是NULL,返回NULL。如果第一个参数包含一个“,”,该函数将工作不正常。

 

7)MAKE_SET(bits,str1,str2,...) 

返回一个集合 (包含由“,”字符分隔的子串组成的一个字符串),由相应的位在bits集合中的的字符串组成。str1对应于位0,str2对应位1,等等。在str1, str2, ...中的NULL串不添加到结果中。

MariaDB [mimvp]> select make_set(1,'a','b','c'), make_set(1 | 3,'a','b','c'), make_set(1 | 0,'a','b','c'); 
+-------------------------+-----------------------------+-----------------------------+
| make_set(1,'a','b','c') | make_set(1 | 3,'a','b','c') | make_set(1 | 0,'a','b','c') |
+-------------------------+-----------------------------+-----------------------------+
| a                       | a,b                         | a                           |
+-------------------------+-----------------------------+-----------------------------+

 

8)EXPORT_SET(bits,on,off,[separator,[number_of_bits])

返回一个字符串,在这里对于在“bits”中设定每一位,你得到一个“on”字符串,并且对于每个复位(reset)的位,你得到一个“off”字符串。每个字符串用“separator”分隔(缺省“,”),并且只有“bits”的“number_of_bits” (缺省64)位被使用。

 

9)LOWER(str)、LCASE(str)、UPPER(str)、UCASE(str)

LCASE(str)、LOWER(str) :返回字符串str,根据当前字符集映射(缺省是ISO-8859-1 Latin1)把所有的字符改变成小写。该函数对多字节是可靠的。

UCASE(str)、UPPER(str) :返回字符串str,根据当前字符集映射(缺省是ISO-8859-1 Latin1)把所有的字符改变成大写。该函数对多字节是可靠的。

MariaDB [mimvp]> select lower('miMVP'), lcase('miMVP'), upper('miMVP'), ucase('miMVP');
+----------------+----------------+----------------+----------------+
| lower('miMVP') | lcase('miMVP') | upper('miMVP') | ucase('miMVP') |
+----------------+----------------+----------------+----------------+
| mimvp          | mimvp          | MIMVP          | MIMVP          |
+----------------+----------------+----------------+----------------+

 

10)LOAD_FILE(file_name) 

读入文件并且作为一个字符串返回文件内容。文件必须在服务器上,你必须指定到文件的完整路径名,而且你必须有file权限。文件必须所有内容都是可读的并且小于max_allowed_packet。如果文件不存在或由于上面原因之一不能被读出,函数返回NULL。

 

 

参考推荐

MySQL命令操作(Linux平台)

Ubuntu安装配置MySQL

MySQL常用语法总结

精妙SQL语句

MySQL 函数 group_concat

MySQL中distinct和group by性能比较

MySQL中case when语句用法

MySQL 查询语句取整数或小数