字符串函数
字符串函数
符串函数用于在 SQL 里以不同于现有存储方式的格式来表示字符串。
一、计算长度 LENGTH
LENGTH 函数用于得到字符串、数字、日期或表达式的长度,单位是字节。
语法:LENGTH(str)
描述:返回字符串 str 的长度,单位为字节。
一个多字节字符算作多字节。这意味着对于一个包含5个2字节字符的字符串,LENGTH() 的返回值为10。
例1:显示 PRODUCTS_TBL 表里产品描述及其长度:
SELECT PROD_DESC, LENGTH(PROD_DESC) FROM PRODUCTS_TBL;
结果:
二、字符替换 REPLACE
1、函数语法
REPLACE 函数用于将字符串里的部分字符用另一个字符串替换。
语法:REPLACE(str, from_str, to_str)
描述:返回字符串 str 中所有的子字符串from_str 都被字符串to_str替代后的字符串。
例2:用‘Ww’替代‘w’:
SELECT REPLACE('www.mysql.com', 'w', 'Ww');
结果: 'WwWwWw.mysql.com'
例3:下面的语句返回雇员表里的全部城市,并且把城市名称里的I 都替换成Z:
SELECT CITY, REPLACE(CITY, 'I', 'Z')
FROM EMPLOYEE_TBL;
结果:
2、批量替换指定字段中的字符串
批量替换指定字段中的字符串是数据库应用中很常见的需求。
语法:UPDATE 表名 SET
指定字段 = replace(指定字段, old_str, new_str)WHERE 条件;
例:把 article 表中 ID 小于5000的记录里,content 字段中的"解决"替换成"解放",那么语法就是:UPDATE article SET content = replace(content, '解决', '解放') WHERE ID<5000;
是不是很方便?
三、去掉空格 TRIM
TRIM 函数用于将字符串里开始和结尾的空格删除。
语法:TRIM(str)
描述:返回字符串 str, 开始和结尾的空格被删除。
例4:SELECT TRIM(' bar ');
结果: 'bar'
语法: LTRIM(str)
描述:返回字符串 str,其引导空格字符被删除。
例5:SELECT LTRIM(' barbar');
结果: 'barbar'
语法: RTRIM(str)
描述:返回字符串 str,结尾空格字符被删去。
例6:SELECT RTRIM('barbar ');
结果: 'barbar'
四、字符串的拼接 CONCAT
CONCAT 函数用来把几个字符串拼接起来。
语法: CONCAT(str1, str2, ...)
描述:返回str1,str2,...连接产生的字符串。
例7: SELECT CONCAT('My', 'S', 'QL');
结果:'MySQL'
例8:把雇员表里个人的姓和名拼接起来,并且在两值之间放置一个逗号:
SELECT CONCAT(LAST_NAME, ',', FIRST_NAME) AS name
FROM EMPLOYEE_TBL;
结果:
五、转化大小写
1、转化为大写 UPPER
语法: UPPER(str)
描述:把字符串 str 里的小写字母转化为大写。
例9:把 country 里的 name 转化为大写:
select name, upper(name) from country;
结果:
2、转化为小写 LOWER
语法:LOWER(str)
描述:把字符串 str 里的大写字母转化为小写。
例10:把雇员表里的 city 转化为小写:
select city, lower(city) from employee_tbl;
结果:
六、其它字符串函数
1、返回子字符串 SUBSTRING
语法:SUBSTRING(str, pos, len)
描述:从字符串 str 返回一个长度为 len 的子字符串,起始于位置 pos。
例:SELECT SUBSTRING('Quadratically',5,6);
结果: 'ratica'
2、寻找子字符串 INSTR
INSTR 函数用于在字符串里寻找指定的子字符串,返回其所在的位置。
语法:INSTR(str,substr)
描述:返回字符串 str 中子字符串 substr 的第一个出现位置。若 substr 不在 str 中,则返回0。
例: SELECT INSTR('foobarbar', 'bar');
结果:4
例: SELECT INSTR('xbar', 'foobar');
结果:0
3、左侧字符串 LEFT
语法:LEFT(str,len)
描述:返回字符串 str 最左侧的 len 个字符。
例: SELECT LEFT('foobarbar', 5);
结果:'fooba'
4、右侧字符串 RIGHT
语法:RIGHT(str,len)
描述:返回字符串 str 最右侧的 len 个字符。
例: SELECT RIGHT('foobarbar', 4);
结果:'rbar'
5、左填充 LPAD
语法:LPAD(str,len,padstr)
描述:在字符串 str 左侧添加字符串 padstr,使其总长度达到 len。假如 str 的长度大于len, 则返回值被缩短至 len 字符。
例: SELECT LPAD('hi',4,'??');
结果: '??hi'
例: SELECT LPAD('hi',1,'??');
结果: 'h'
6、右填充 RPAD
语法: RPAD(str,len,padstr)
描述:在字符串 str 右侧添加字符串 padstr,使其总长度达到 len。假如 str 的长度大于 len,则返回值被缩短至 len 字符。
例: SELECT RPAD('hi',5,'?');
结果: 'hi???'
例:SELECT RPAD('hi',1,'?');
结果: 'h'
7、ASCII 函数
语法:ASCII(str)
描述:返回字符串 str 最左侧字符的 ASCII 码。
例: ASCII('A') 返回65;
ASCII('B') 返回66;
ASCII('C') 返回67;
ASCII('a') 返回97;
ASCII('2') 返回50;
ASCII(2) 返回50;
ASCII('dx') 返回100。