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()函数从右端补齐字符串。
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;
Oracle中有关字符串操作的语法的更多相关文章
- Oracle中有关数学表达式的语法
Oracle中有关数学表达式的语法 三角函数 SIN ASIN SINHCOS ACOS COSHTA ...
- oracle中一个字符串包含另一个字符串中的所有字符
oracle中一个字符串包含另一个字符串中的所有字符 --解决监理报告中所勾选的标段信息,与该用户所管理的标段字符串不匹配的问题. select * from a where instr(a,b)&g ...
- SQL点滴33—SQL中的字符串操作
原文:SQL点滴33-SQL中的字符串操作 计算字符串长度len()用来计算字符串的长度 select sname ,len(sname) from student 字符串转换为大.小写lower() ...
- Python中的字符串操作总结(Python3.6.1版本)
Python中的字符串操作(Python3.6.1版本) (1)切片操作: str1="hello world!" str1[1:3] <=> 'el'(左闭右开:即是 ...
- Oracle中序列的操作以及使用前对序列的初始化
Oracle中序列的操作以及使用前对序列的初始化 一 创建序列 create sequence myseq start with 1 increment by 1 nomaxvalue minva ...
- 一句python,一句R︱python中的字符串操作、中文乱码、NaN情况
一句python,一句R︱python中的字符串操作.中文乱码.NaN情况 先学了R,最近刚刚上手Python,所以想着将python和R结合起来互相对比来更好理解python.最好就是一句pytho ...
- Java中的字符串操作(比较String,StringBuiler和StringBuffer)
一.前言 刚开始学习Java时,作为只会C语言的小白,就为其中的字符串操作而感到震撼.相比之下,C语言在字节数组中保存一个结尾的\0去表示字符串,想实现字符串拼接,还需要调用strcpy库函数或者自己 ...
- 浅谈JavaScript中的字符串操作
我想,最为一名开发人员,最实际开发过程中,任何一门语言在开发实际的项目的过程中,都是逃不开字符串的操作的下面笔者就自己日常开发过程中所用到的一些字符串的操作方法做一些陈述和总结,当然,如若读者觉得 ...
- [转] JavaScript中的字符串操作
一.概述 字符串在JavaScript中几乎无处不在,在你处理用户的输入数据的时候,在读取或设置DOM对象的属性时,在操作cookie时,当然还有更 多....JavaScript的核心部分提供 ...
随机推荐
- SPRING-BOOT系列之简介
来自:51CTO的学习视频,本博客作为一个知识点记录以及代码验证 spring boot 特点 1. 为基于spring的开发提供更快的入门体验 2. 创建可以独立运行的spring应用 3. 直接嵌 ...
- java自带线程池
1. newSingleThreadExecutor 创建一个单线程的线程池.这个线程池只有一个线程在工作,也就是相当于单线程串行执行所有任务.如果这个唯一的线程因为异常结束,那么会有一个新的线程来替 ...
- Lock wait timeout exceeded; try restarting transaction linux设置mysql innodb_lock_wait_timeout
root权限下: vi /etc/my.cnf 在[mysqld]配置下面加入 innodb_lock_wait_timeout=value # value是你想设置的值 重启mysql /etc/i ...
- sql注入原理及解决方案
sql注入原理 sql注入原理就是用户输入动态的构造了意外sql语句,造成了意外结果,是攻击者有机可乘 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的 ...
- archsummit_bj2016
http://bj2016.archsummit.com/schedule 大会日程 2016年12月02日,星期五 7:45-9:00 签到 8:45-9:00 开始入场 9:00-9:30 开场致 ...
- 解决Android Studio安装过程中“SDK tools directory is missing”的问题
"SDK tools directory is missing",这是因为安装时你的计算机无法连接到google的服务器(对google服务器的域名地址解析出问题了),无法从goo ...
- 探究SQL添加非聚集索引,性能提高几十倍之谜
上周,技术支持反映:客户的一个查询操作需要耗时6.1min左右,在跟进代码后,简化了数据库的查询后仍然收效甚微.后来,技术总监分析了sql后,给其中的一个表添加的一个非聚集索引(三个字段)后,同样的查 ...
- laravel模型关联
hasOne 一对一 用户名-手机号hasMany 一对多 文章-评论belongTo 一对多反向 评论-文章belongsToMany 多对多 用户-角色hasManyThrough 远程 ...
- 跟随鼠标指针跑的div拖拽效果
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- FPGA编程技巧系列之按键边沿检测
抖动的产生: 通常的按键所用开关为机械弹性开关,当机械触点断开.闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开.因而在闭合及断开的瞬间均伴随有一连串的 ...