Oracle中有关字符串操作的语法

Oracle中有关字符串操作的语法

Oracle提供了丰富的字符串函数

    

lpad()函数

lpad()函数用于左补全字符串。在某些情况下,预期的字符串为固定长度,而且格式统一,此时可以考虑使用lpad()函数。例如,深市股票代码都以0开头,并且都为6位,可以利用lpad格式化股票代码,以保证股票代码的格式。

select lpad('21',6,'0') stock_code from dual;

需要注意的是,当原字符串的长度大于预期长度时,实际进行的是截取字符串操作。

select lpad('1234567',6,'0') stock_code from dual;

rpad()函数

与lpad()函数相反,rpad()函数从右端补齐字符串。

扫描二维码关注公众号,回复: 4207769 查看本文章

select rpad('abc', 10, '*') from dual;

注意与说明:lpad()和rpad()都用于填充字符串,lpad()从左端进行填充,而rpad()从右端进行填充,但是,二者在最终截取字符串时,都是从左端开始截取。

select rpad('abcdefg', 6, '*') from dual;

lower()函数——返回小写字符串

lower()函数用于返回字符串的小写形式。lower()函数在查询语句中经常扮演重要角色。例如,对于用户名和密码的校验来说,用户名一般并不区分大小写,用户无论输入了大写还是小写形式,都被认为是合法用户。因此,在数据库查询时,应该将数据库中用户名与用户输入的用户名进行统一。

select user_id, user_name from t_users where lower(user_name) = lower('Alex');

upper()函数——返回大写字符串

upper()函数用于返回字符串的大写形式。与lower()函数类似,upper()函数也可以用在查询语句中,以统一数据库和查询条件的一致性。

select user_id, user_name from t_users where upper(user_name) = upper('ALEX');

注意与说明:upper()函数和lower()函数只针对英文字符其作用,因为只有英文字符才有大小写之分。

initcap ()函数——单词首字母大写

nitcap()函数将单词的首字母大写。

select initcap('big') from dual;

需要注意的是,initcap()函数不能自动识别单词

select initcap('bigbigtiger') from dual;

initcap()函数会将参数中的非单词字符作为单词分隔符

select initcap('big_big_tiger') from dual;

select initcap('big/big/tiger') from dual;

select initcap('big big tiger') from dual;

length()函数用于返回字符串的长度。

select length('abcd ') from dual;

空字符串的长度不是0,而是null。因为空字符串被视作null,所以,length(null)返回的仍然是null。

select length('') from dual;

对其其他数据类型,照样可以通过length()函数来获得其长度。length()函数会首先将参数转换为字符串,然后计算其长度。

select length(12.51) from dual;

substr()函数——截取字符串

substr()函数用于截取字符串。该函数可以指定截取的起始位置,截取长度,可以实现灵活的截取操作,因此,成为字符串操作中最常用的函数之一。

例如,对于字符串"1234567890",现欲截取自第5位开始的4个字符。

select substr('1234567890', 5, 4) from dual;

需要注意的是,Oracle中字符位置从1开始,而不是像某些编程语言(如Java)那样从0开始。

如果不指定长度,那么substr()函数将获取起始位置参数至字符串结尾处的所有字符。

select substr('1234567890', 5) from dual;

instr()函数用于获得子字符串在父字符串中出现的位置。

select instr('big big tiger', 'big') from dual;

可以指定额外的参数,以命令该函数从指定位置开始搜索。

select instr('big big tiger', 'big', 2) from dual;

还可以指定出现次数参数,以指定是第几次搜索到子字符串。

select instr('big big tiger', 'big', 2, 2) from dual;

ltrim()函数——删除字符串首部空格

ltrim()中的l代表left。该函数用于删除字符串左端的空白符。

select ltrim(' abc') from dual;

需要注意的是,空白符不仅仅包括了空格符,还包括TAB键、回车符和换行符。

rtrim()函数——删除字符串尾部空格

rtrim()中的r代表right。该函数用于删除字符串右端空白符。删除字符串首尾空白符可以结合使用ltrm()和rtrim()函数。

select rtrim(ltrim(' abc ')) from dual;

trim()函数——删除字符串首尾空格

trim()函数可用于删除首尾空格,相当于ltrim()和rtrim()的组合。

select trim(' abc ') from dual;

to_char()函数——将其他类型转换为字符类型

to_char()函数用于将其他数据类型的数据转换为字符型,这些类型主要包括数值型、日期型。

1. 将数值型转换为字符串

select to_char(120, '99999') result from dual;

select to_char(0.96, '9.99') result from dual;

select to_char(0.96, '0.00') result from dual;

select to_char(5897.098, '999,999,999.000') result from dual;

select to_char(5987.098, '$999,999,999.000') result from dual;

2. 将日期型转换为字符串

select to_char(sysdate, 'yyyy-mm-dd') result from dual;

select to_char(sysdate, 'YYYY-MON-DD') from dual;

chr()函数——将ascii码转换为字符串

chr()函数用于将ascii码转换为字符串。通过chr()函数,可以对不宜直接输入的字符进行操作。例如,将回车换行符插入到数据中。

insert into test_data values (6, '周林'||chr(13)||chr(10)|'梁军', 20);

select * from test_data where id = 6;

translate()函数——替换字符

translate()函数用于替换字符串。替换的规则类似于翻译的过程。

select translate('56338', '1234567890', 'avlihemoqr') result from dual;

需要注意的是,当字符不能被成功"翻译",那么,Oracle将使用空字符替换它。利用此特性,可以使用translate()函数来删除一个含有数字和英文字母的字符串中的所有字母:

select translate('21343yuioioizf899dasiwpe58595oda0j098', '#abcdefghijklmnopqrstuvwxyz',' ') reulst

from dual;

猜你喜欢

转载自www.cnblogs.com/kexinxin/p/10011929.html