一、字符串相关函数:
1、连接字符串:
(1)concat(),
在mysql中可以直接连接多个字符串,但是在oracle中,一次只能连接两个:
select concat('hello','world')from dual;--可以正常运行,打印出helloworld
select concat('hello',',''world')from dual--报错
如果真的要连接多个字符串,就要嵌套:
select concat(concat('hello',','),'world')from dual;--多个嵌套
(2)||连接符:
select 'hello'||','||'word'from dual;--使用||连接符拼接字符
select t.job,t.ename,t.job||'_'||t.ename as a from emp t;--拼接字段内容。
(3)initcap:所有单词首字母大写:
select initcap('software is like sex,it is better when it is free') from dual;
select e.job,e.ename initcap(e.job||'_'||e.ename)from emp e;
(4)upper/lower :所有字母大写/小写:
select e.job,e.ename,upper(e.job||'_'||e.ename) from emp e;
select e.job,e.ename,lower(e.job||'_'||e.ename) from emp e;
(5)instr:相当于java的 indexof
select instr('hello','e') a from dual;--查找e在hello中出现的位置
select instr('hellohello','e',3) a from dual;--查找e从第三个位置开始在hello中出现的位置
select instr('hellohello','e',3,2) a from dual;--查找e在hello中从第三个位置开始第二次出现的位置
(6)substr:和js中的substr用法相同,substr('aaabbb',3,2)截取字符串从第三位开始截取2个字符。
(7)rpad/lpad 补全,用法:rpad(helllo,10,'@')使用@在hello右边进行补全,直到字符串够十位,ipad是从左边进行补全。
rpad:
select rpad('aaa',10,'@')from dual;--用‘@’符号在查到的字符串后面补全到十位。顺序不能错。
select rpad('aaa','@',10)from dual;--这种形式查不到。
查询结果:
lpad:在目标左边补全:
select lpad(1,7,0)from dual;--结果为:0000001;
create sequence seq_order_id;创建一个序列,可以使结果递增。
select lpad(seq_order_id.nextval,7,0)from dual;--每次查询结果都递增1,
to_char:使日期格式转换为字符串:
select to_char(sysdate,'YYYY-MM-DD')from dual;
-- 生成一个订单号 订单号必须ord开头 长度为15位 ord后加上当前日期 其余位按照数字递增 ord202007080001.....
select 'ord'||to_char(sysdate,'YYYYMMDD')||lpad(seq_order_id.nextval,4,0) from dual;
8.去除字符空格:
select ltrim (' aaa'),' aaa' from dual;--去除左边空格。
select rtrim('aaa ')from dual;--去除右边空格。
select length(trim (' aaa '))from dual;--去除左右两边空格,查到字符长度为3,证明空格去除成功。
select trim('a'from 'aaa113aaa')from dual --去除字符左右两端的a字母。
去除左右两边空格,第三行的结果:
去除左右两边a字母,第四行的结果:
二、日期函数:
1、sysdate 获取当前时间:
select sysdate from dual;
2、 add_months:增加月:
select add_months(sysdate,-2),sysdate from dual;
3、两个日期相减,得到天数差:
select sysdate,sysdate-to_date('2022-02-03 17:51:43','YYYY-MM-DD hh24:mi:ss')from dual;