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
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!