MySQL常见的字符串处理函数
常用的字符串函数* upper 和 ucase
//把所有字符转换为大写字母
select upper(name) from 表名;
* lower 和 lcase
//把所有字符转换为小写字母
select lcase(name) from 表名;
* replace(str, from_str, to_str)
//把str中的from_str替换为to_str
select replace(字段名,替换前的值,替换后的值) from 表名;
* repeat(str,count)
//返回str重复count次的字符串
select repeat('abc',2) from 表名; // abcabc
* reverse(str)
//逆序字符串
select reverse('abc') from 表名; // cba
* insert(str,pos,len,newstr)
//把str中pos位置开始长度为len的字符串替换为newstr
select insert('abcdef',2,3,'hhh'); // ahhhef
* substring(str from pos)
//从str中的pos位置开始返回一个新字符串
select substring('abcdef',3); // cdef
* substring_index(str,delim,count)
//返回str中第count次出现的delim之前的所有字符,如果count为负数,则从右向左
select substring_index('abacadae','a',3); // abac
* ltrim(str)
//去除字符串左边的空格
select ltrim('abc');
* rtrim(str)
//去除字符串右边的空格
select rtrim('abc');
* trim(str)
//去除字符串左右两边的空格
select trim(' abc ');
* mid(str,pos,len)
//从str中的pos位置开始返回len个长度的字符串
select mid('abcdef',2,3); // bcd
* lpad(str,len,padstr)
//在str左边填充padstr直到str的长度为len
select lpad('abc',8,'de'); // dededabc
* rpad(str,len,padstr)
//在str右边填充padstr直到str的长度为len
select rpad('abc',8,'de'); // abcdeded
* left(str,len)
//返回str左边的len个字符
select left('abcd',2); // ab
* right(str,len)
//返回str右边的len个字符
select right('abcd',2); // cd
* position(substr in str)
//返回substr在str中第一次出现的位置
select position('c' in 'abcdc'); // 3
* length(str)
//返回字符串的长度
select length('abcd'); // 4
* concat(str1,str2,...)
//合并字符串
select concat('abc','def','gh'); // abcdefgh
移除字符可以使用trim()函数来实现,它将字符串的相关字符移除(如果没有指定待删除的字串,将视为处理空格),包括位于字符头、中、尾这三处位置,位置参数分别为(both(默认)、leading、trailing),返回值为处理过的字符串。这个函数是多字节安全的。
The useful string function in MySQL database is TRIM() which will return a text string after removing the matching leading or trailing characters, also known as prefixes or suffixes. It's been described by MySQL reference as function that returns the string str with all remstr prefixes or suffixes removed.
If none of the specifiers BOTH, LEADING, or TRAILING is given, BOTH is assumed. remstr is optional and, if not specified, spaces are removed.
语法:
TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str), TRIM([remstr FROM] str)
示例:
SELECT TRIM(' bar ');
will return 'bar' (spaces dropped).
#移除左值的'x'
SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx');
will return 'barxxx' (only leading x characters is removed).
#移除所有的'x'
SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx');
will return 'bar' (leading and trailing xs is dropped).
#移除右值的'xyz'
SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz');
will return 'barx' (trailing xyz is cleared).
This function is multi-byte safe. And it can also be used with other SQL command such as UPDATE to perform modification update directly on database table data with SQL statement.
在mysql中还有另外两个左、右字符的函数:ltrim、rtrim,它们对应的trim函数的(leading、trailing),但它们仅针对空格的设计。另外在测试的时候调用'length'函数来测试最终结果。