oracle常见函数应用积累
2014-02-24 16:19
465 查看
LENGTH
--返回以字符为单位的长度.
LENGTHB
--返回以字节为单位的长度.
LENGTHC
--返回以Unicode完全字符为单位的长度.
LENGTH2
--返回以UCS2代码点为单位的长度.
LENGTH4
--返回以UCS4代码点为单位的长度.
--根据乡村组id获取所属卫生院
Select * From torganization a Where a.fparentorgid=(
Select
substr(t.forgseq,INSTR(t.forgseq,'.',1,4)+1,INSTR(t.forgseq,'.',1,5)-INSTR(t.forgseq,'.',1,4)-1)
From torganization t Where t.forgid=43337) And a.forgtypeid=3 And a.flevel=2 And a.stage=1 And Rownum=1;
--oracle截取与定位
--根据乡村组id获取所属卫生院
Select * From torganization a Where a.fparentorgid=(
Select
substr(t.forgseq,INSTR(t.forgseq,'.',1,4)+1,INSTR(t.forgseq,'.',1,5)-INSTR(t.forgseq,'.',1,4)-1)
From torganization t Where t.forgid=43337) And a.forgtypeid=3 And a.flevel=2 And a.stage=1 And Rownum=1;
--含非法字符的(不是数字和字母)
Select Regexp_replace(t.fidcard,'[^[:alnum:]]','') newfidcard,t.* From tjfpersoninfonext t Where regexp_like(t.fidcard,'[^[:alnum:]]');
--全角转半角
select TO_SINGLE_BYTE('oracle') from dual;
--oracle字符簇
字符簇:
[[:alpha:]] 任何字母。
[[:digit:]] 任何数字。
[[:alnum:]] 任何字母和数字。
[[:space:]] 任何白字符。
[[:upper:]] 任何大写字母。
[[:lower:]] 任何小写字母。
[[:punct:]] 任何标点符号。
[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。
--一次性更新身份证号(1.全角的更新为半角 2.中间有非法字符的过滤掉 3.第18位如果不是数字的改为X)
Select
substr(Case When length(aa.newfidcard1)<15 Then newfidcard1||Regexp_replace(aa.newfidcard2,'[^[:alnum:]]','')
When length(aa.newfidcard1)>14 Then newfidcard1||Regexp_replace(aa.newfidcard2,'[^[:alnum:]]','X') End,0,18) NEWIDCARD,
aa.* From (
Select
trim(Regexp_replace(substr(to_single_byte(t.fidcard),0,length(to_single_byte(t.fidcard))-1),'[^[:digit:]]','')) newfidcard1,
trim(substr(to_single_byte(t.fidcard),length(to_single_byte(t.fidcard)))) newfidcard2,
t.* From tjfpersoninfo t Where
(
regexp_like(substr(to_single_byte(t.fidcard),0,length(to_single_byte(t.fidcard))-1),'[^[:digit:]]') --除最后一位之外如果不是数字
Or --或者
regexp_like(substr(to_single_byte(t.fidcard),length(to_single_byte(t.fidcard))),'[^[:alnum:]]')--最后一位不是数字或者字母
)
/*And t.frcode='410782'*/) aa
--查找有效的日期但不在范围之内
--1.年度后两位小于14的,前两位都给改成20 2.年度小于1900的年度前两位改成19 按次序执行
Select to_char(t.fbrithday,'yyyy'),to_date('20'||substr(to_char(t.fbrithday,'yyyy'),3,2)||'-'||to_char(t.fbrithday,'MM-dd'),'yyyy-MM-dd') newbirthday,t.* From tjfpersoninfo t Where (t.fbrithday<to_date('1900-01-01','yyyy-MM-dd') Or t.fbrithday>Sysdate)
And substr(to_char(t.fbrithday,'yyyy'),3,2)<14;
Update tjfpersoninfo t Set t.fbrithday=to_date('20'||substr(to_char(t.fbrithday,'yyyy'),3,2)||'-'||to_char(t.fbrithday,'MM-dd'),'yyyy-MM-dd')
Where (t.fbrithday<to_date('1900-01-01','yyyy-MM-dd') Or t.fbrithday>Sysdate)
And substr(to_char(t.fbrithday,'yyyy'),3,2)<14;
Select to_char(t.fbrithday,'yyyy'),to_date('19'||substr(to_char(t.fbrithday,'yyyy'),3,2)||'-'||to_char(t.fbrithday,'MM-dd'),'yyyy-MM-dd') newbirthday,t.* From tjfpersoninfo t Where (t.fbrithday<to_date('1900-01-01','yyyy-MM-dd') Or t.fbrithday>Sysdate)
And to_char(t.fbrithday,'yyyy')<1900;
Update tjfpersoninfo t Set t.fbrithday=to_date('19'||substr(to_char(t.fbrithday,'yyyy'),3,2)||'-'||to_char(t.fbrithday,'MM-dd'),'yyyy-MM-dd')
Where (t.fbrithday<to_date('1900-01-01','yyyy-MM-dd') Or t.fbrithday>Sysdate)
And to_char(t.fbrithday,'yyyy')<1900;
--返回以字符为单位的长度.
LENGTHB
--返回以字节为单位的长度.
LENGTHC
--返回以Unicode完全字符为单位的长度.
LENGTH2
--返回以UCS2代码点为单位的长度.
LENGTH4
--返回以UCS4代码点为单位的长度.
--根据乡村组id获取所属卫生院
Select * From torganization a Where a.fparentorgid=(
Select
substr(t.forgseq,INSTR(t.forgseq,'.',1,4)+1,INSTR(t.forgseq,'.',1,5)-INSTR(t.forgseq,'.',1,4)-1)
From torganization t Where t.forgid=43337) And a.forgtypeid=3 And a.flevel=2 And a.stage=1 And Rownum=1;
--oracle截取与定位
--根据乡村组id获取所属卫生院
Select * From torganization a Where a.fparentorgid=(
Select
substr(t.forgseq,INSTR(t.forgseq,'.',1,4)+1,INSTR(t.forgseq,'.',1,5)-INSTR(t.forgseq,'.',1,4)-1)
From torganization t Where t.forgid=43337) And a.forgtypeid=3 And a.flevel=2 And a.stage=1 And Rownum=1;
--含非法字符的(不是数字和字母)
Select Regexp_replace(t.fidcard,'[^[:alnum:]]','') newfidcard,t.* From tjfpersoninfonext t Where regexp_like(t.fidcard,'[^[:alnum:]]');
--全角转半角
select TO_SINGLE_BYTE('oracle') from dual;
--oracle字符簇
字符簇:
[[:alpha:]] 任何字母。
[[:digit:]] 任何数字。
[[:alnum:]] 任何字母和数字。
[[:space:]] 任何白字符。
[[:upper:]] 任何大写字母。
[[:lower:]] 任何小写字母。
[[:punct:]] 任何标点符号。
[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。
--一次性更新身份证号(1.全角的更新为半角 2.中间有非法字符的过滤掉 3.第18位如果不是数字的改为X)
Select
substr(Case When length(aa.newfidcard1)<15 Then newfidcard1||Regexp_replace(aa.newfidcard2,'[^[:alnum:]]','')
When length(aa.newfidcard1)>14 Then newfidcard1||Regexp_replace(aa.newfidcard2,'[^[:alnum:]]','X') End,0,18) NEWIDCARD,
aa.* From (
Select
trim(Regexp_replace(substr(to_single_byte(t.fidcard),0,length(to_single_byte(t.fidcard))-1),'[^[:digit:]]','')) newfidcard1,
trim(substr(to_single_byte(t.fidcard),length(to_single_byte(t.fidcard)))) newfidcard2,
t.* From tjfpersoninfo t Where
(
regexp_like(substr(to_single_byte(t.fidcard),0,length(to_single_byte(t.fidcard))-1),'[^[:digit:]]') --除最后一位之外如果不是数字
Or --或者
regexp_like(substr(to_single_byte(t.fidcard),length(to_single_byte(t.fidcard))),'[^[:alnum:]]')--最后一位不是数字或者字母
)
/*And t.frcode='410782'*/) aa
--查找有效的日期但不在范围之内
--1.年度后两位小于14的,前两位都给改成20 2.年度小于1900的年度前两位改成19 按次序执行
Select to_char(t.fbrithday,'yyyy'),to_date('20'||substr(to_char(t.fbrithday,'yyyy'),3,2)||'-'||to_char(t.fbrithday,'MM-dd'),'yyyy-MM-dd') newbirthday,t.* From tjfpersoninfo t Where (t.fbrithday<to_date('1900-01-01','yyyy-MM-dd') Or t.fbrithday>Sysdate)
And substr(to_char(t.fbrithday,'yyyy'),3,2)<14;
Update tjfpersoninfo t Set t.fbrithday=to_date('20'||substr(to_char(t.fbrithday,'yyyy'),3,2)||'-'||to_char(t.fbrithday,'MM-dd'),'yyyy-MM-dd')
Where (t.fbrithday<to_date('1900-01-01','yyyy-MM-dd') Or t.fbrithday>Sysdate)
And substr(to_char(t.fbrithday,'yyyy'),3,2)<14;
Select to_char(t.fbrithday,'yyyy'),to_date('19'||substr(to_char(t.fbrithday,'yyyy'),3,2)||'-'||to_char(t.fbrithday,'MM-dd'),'yyyy-MM-dd') newbirthday,t.* From tjfpersoninfo t Where (t.fbrithday<to_date('1900-01-01','yyyy-MM-dd') Or t.fbrithday>Sysdate)
And to_char(t.fbrithday,'yyyy')<1900;
Update tjfpersoninfo t Set t.fbrithday=to_date('19'||substr(to_char(t.fbrithday,'yyyy'),3,2)||'-'||to_char(t.fbrithday,'MM-dd'),'yyyy-MM-dd')
Where (t.fbrithday<to_date('1900-01-01','yyyy-MM-dd') Or t.fbrithday>Sysdate)
And to_char(t.fbrithday,'yyyy')<1900;
相关文章推荐
- Access、SQL Server、Oracle 常见应用的区别
- ORACLE应用常见傻瓜问题1000问(之一)
- jquery中的常见方法应用积累
- 《Excel 2010 SQL完全应用》学习笔记之一:SQL常见函数的使用(续)
- oracle函数综合应用
- prototype.js日常应用函数积累
- Oracle 中常见函数在teradata中如何实现
- oracle 常见函数
- Oracle 笔记(八)、PL/SQL 高级应用(游标、存储过程、函数、程序包)
- Oracle 中 table 函数的应用
- Oracle之分析函数 去重 应用
- ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)
- Oracle应用专题之:分析函数3(Top/Bottom N、First/Last、NTile)
- oracle 函数积累
- ORACLE应用常见傻瓜问题1000问
- oracle中的函数及其应用
- SQL必备-ORACLE-SQSLSERVER-DB2时间函数及常见函数总结
- Oracle DECODE 函数应用示例
- oracle常见的函数总结
- Oracle-字符函数应用-检测汉字