MySQL 字段的添加前缀、去掉前缀等字符串操作
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。
参考推荐:
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2018-03-19 05:15:54
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!