MySQL字符串函数
字符串大写和小写转换
MySQL 字符串大写和小写转化函数有两对: lower(), uppper() 和 lcase(), ucase()
mysql> select lower('DDD'); +--------------+ | lower('DDD') | +--------------+ | ddd | +--------------+ mysql> select upper('ddd'); +--------------+ | upper('ddd') | +--------------+ | DDD | +--------------+ mysql> select lcase('DDD'); +--------------+ | lcase('DDD') | +--------------+ | ddd | +--------------+ mysql> select ucase('ddd'); +--------------+ | ucase('ddd') | +--------------+ | DDD | +--------------+
通常情况下,我选择 lower(), upper() 来转换字符串大写和小写。由于这和其它数据库中函数相兼容。
清除字符串首尾空格
MySQL 中的清除字符串首尾空格函数有三个: ltrim(), rtrim(), trim()
mysql> select concat('.', ltrim(' ddd '), '.'); +----------------------------------+ | concat('.', ltrim(' ddd '), '.') | +----------------------------------+ | .ddd . | +----------------------------------+ mysql> select concat('.', rtrim(' ddd '), '.'); +----------------------------------+ | concat('.', rtrim(' ddd '), '.') | +----------------------------------+ | . ddd. | +----------------------------------+ mysql> select concat('.', trim(' ddd '), '.'); +---------------------------------+ | concat('.', trim(' ddd '), '.') | +---------------------------------+ | .ddd. | +---------------------------------+
MySQL 中的 trim 字符串函数,实在是强大。它不仅能消除字符串首尾部的空格,还能够消除我们指定的随意字符。
ltrim(), rtrim() 仅仅是它的一个功能子集。来看下 trim 函数的完整语法:
1. trim([{both | leading | trailing} [remstr] from] str) 2. trim([remstr from] str)
1. 清除字符串首部字符。
mysql> select trim(leading '.' from '..ddd..'); +----------------------------------+ | trim(leading '.' from '..ddd..') | +----------------------------------+ | ddd.. | +----------------------------------+
2. 清除字符串尾部字符。
mysql> select trim(trailing '.' from '..ddd..'); +-----------------------------------+ | trim(trailing '.' from '..ddd..') | +-----------------------------------+ | ..ddd | +-----------------------------------+
3. 清除字符串首尾部字符。
mysql> select trim(both '.' from '..ddd..'); +-------------------------------+ | trim(both '.' from '..ddd..') | +-------------------------------+ | ddd | +-------------------------------+ mysql> select trim('.' from '..ddd..'); +--------------------------+ | trim('.' from '..ddd..') | +--------------------------+ | ddd | +--------------------------+
trim() 默认清除字符串首尾部的空格。
字符串截取
MySQL 字符串截取函数:left(), right(), substring(), substring_index()。还有 mid(), substr()。当中,mid(), substr() 等价于 substring() 函数,substring() 的功能很强大和灵活。
1. 字符串截取:left(str, length)
mysql> select left('sqlstudy.com', 3); +-------------------------+ | left('sqlstudy.com', 3) | +-------------------------+ | sql | +-------------------------+
2. 字符串截取:right(str, length)
mysql> select right('sqlstudy.com', 3); +--------------------------+ | right('sqlstudy.com', 3) | +--------------------------+ | com | +--------------------------+
3. 字符串截取:substring(str, pos); substring(str, pos, len)
3.1 从字符串的第 4 个字符位置開始取,直到结束。
mysql> select substring('sqlstudy.com', 4); +------------------------------+ | substring('sqlstudy.com', 4) | +------------------------------+ | study.com | +------------------------------+
3.2 从字符串的第 4 个字符位置開始取。仅仅取 2 个字符。
mysql> select substring('sqlstudy.com', 4, 2); +---------------------------------+ | substring('sqlstudy.com', 4, 2) | +---------------------------------+ | st | +---------------------------------+
3.3 从字符串的第 4 个字符位置(倒数)開始取,直到结束。
mysql> select substring('sqlstudy.com', -4); +-------------------------------+ | substring('sqlstudy.com', -4) | +-------------------------------+ | .com | +-------------------------------+
3.4 从字符串的第 4 个字符位置(倒数)開始取。仅仅取 2 个字符。
mysql> select substring('sqlstudy.com', -4, 2); +----------------------------------+ | substring('sqlstudy.com', -4, 2) | +----------------------------------+ | .c | +----------------------------------+
我们注意到在函数 substring(str,pos, len)中。 pos 能够是负值,但 len 不能取负值。
4. 字符串截取:substring_index(str,delim,count)
4.1 截取第二个 '.' 之前的全部字符。
mysql> select substring_index('www.sqlstudy.com.cn', '.', 2); +------------------------------------------------+ | substring_index('www.sqlstudy.com.cn', '.', 2) | +------------------------------------------------+ | www.sqlstudy | +------------------------------------------------+
4.2 截取第二个 '.' (倒数)之后的全部字符。
mysql> select substring_index('www.sqlstudy.com.cn', '.', -2); +-------------------------------------------------+ | substring_index('www.sqlstudy.com.cn', '.', -2) | +-------------------------------------------------+ | com.cn | +-------------------------------------------------+
4.3 假设在字符串中找不到 delim 參数指定的值。就返回整个字符串
mysql> select substring_index('www.sqlstudy.com.cn', '.coc', 1); +---------------------------------------------------+ | substring_index('www.sqlstudy.com.cn', '.coc', 1) | +---------------------------------------------------+ | www.sqlstudy.com.cn | +---------------------------------------------------+