博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle 使用技巧(一)
阅读量:4694 次
发布时间:2019-06-09

本文共 2776 字,大约阅读时间需要 9 分钟。

一、字段字符串拼接(wm_concat)

 

--wm_concat(字符串拼接) 相当于(('1', '2', '3', '4'....))select wm_concat(chr(39) || 拼接字段名称 || chr(39)) from 表名;

 

二、特殊字符或者符号检查(regexp_like)(regexp_like(字段名称,'^.*[a-zA-Z0-9]|\?|测试|[[:punct:]]|[[:space:]].*$'))

select *  from 表名称 a where regexp_like(校验字段名称,'^.*[a-zA-Z0-9]|\?|测试|[[:punct:]]|[[:space:]].*$')    or a.aac003 like '%' || chr(29) || '%';--chr(29)表示特殊空格符号

 

--将含有正则表达式的值替换成空select regexp_replace(需要替换的字段名称,                      '^*[[:space:]]|[【】!~\▌"’;·,''*+-./;=`、。‘*."]|[]]|*$',                      '')  from 表名称 t;

 

 

 

三、将字段值中含有 数字 的提取出来(translate)

--将含有数字的信息提取出来select translate('100字段名称或者替换值123',                 '#' || translate('100字段名称或者替换值', '0123456789', '#'),                 '/')  from dual;

四、Oracle查看表名称(USER_TAB_COMMENTS)、表字段名称(USER_COL_COMMENTS)

--查看表中的字段名称  select * from USER_COL_COMMENTS T where t.comments like '%农村%'; --字段名称关键字--查看表字段select y.table_name, y.comments, t.column_name, t.comments  from USER_COL_COMMENTS T, USER_TAB_COMMENTS y where t.table_name = y.table_name   and t.column_name = 'AAB001' --字段名称   and length(t.table_name) = 4;

五、统计两个字段之间的月数、如年龄。(months_between)

 1、months_between 函数返回两个日期之间的月份数。如果两个日期月份内天数相同,或者都是某个月的最后一天,返回一个整数,否则,返回数值带小数,以每天1/31月来计算月中剩余天数。

 

 2、months_between(sysdate, 字段名称) --取两个时间段的值

 3、trunc() 函数是对时间类型或者数字进行截取操作的,默认截取0
TRUNC(months_between(sysdate, AAC006) / 12) --截取整月

select months_between(sysdate, sysdate - 62) 月数 from dual; --两个月零一天select months_between(sysdate, sysdate - 61) 月数 from dual; --正好两个月select sysdate - 12000 from dual;select months_between(sysdate, sysdate - 12000) 月数,       TRUNC(months_between(sysdate, sysdate - 12000) / 12) AS age1,       TRUNC((to_char(sysdate, 'yyyyMMdd') -             to_char(sysdate - 12000, 'yyyyMMdd')) / 10000) as age2  from dual t;

六、统计两个字段之间的时间差(ROUND)

ROUND(TO_NUMBER(结束时间 - 开始时间)) 

mod(ROUND(TO_NUMBER(结束时间 - 开始时间) * 24), 24)
mod(ROUND(TO_NUMBER(结束时间 - 开始时间) * 24 * 60), 60)
mod(ROUND(TO_NUMBER(结束时间 - 开始时间) * 24 * 60 * 60), 60)

select ROUND(TO_NUMBER(结束时间 - 开始时间)) || '天' ||       ROUND(TO_NUMBER(结束时间 - 开始时间) * 24)|| '时' ||       ROUND(TO_NUMBER(结束时间 - 开始时间) * 24 * 60) || '分' ||       ROUND(TO_NUMBER(结束时间 - 开始时间) * 24 * 60 * 60) || '秒'  from 表名称 t;        select ROUND(TO_NUMBER(sysdate+5 - sysdate)) as 天,       mod(ROUND(TO_NUMBER(sysdate+5 - sysdate) * 24), 24) 时,       mod(ROUND(TO_NUMBER(sysdate+5 - sysdate) * 24 * 60), 60) 分,       mod(ROUND(TO_NUMBER(sysdate+5 - sysdate) * 24 * 60 * 60), 60) 秒,       ROUND(TO_NUMBER(sysdate+5 - sysdate)) || '天' ||       mod(ROUND(TO_NUMBER(sysdate+5 - sysdate) * 24), 24) || '时' ||       mod(ROUND(TO_NUMBER(sysdate+5 - sysdate) * 24 * 60), 60) || '分' ||       mod(ROUND(TO_NUMBER(sysdate+5 - sysdate) * 24 * 60 * 60), 60) || '秒' 用时  from dual t;

 

转载于:https://www.cnblogs.com/ljs05/p/9357504.html

你可能感兴趣的文章
幻灯片的实现
查看>>
Eclipse Mars.1 (4.5.1) 发布下载转摘
查看>>
HDU 3863 (博弈) No Gambling
查看>>
文件锁使用
查看>>
iOS 中的加密方式
查看>>
pdftk
查看>>
OS_EVENT 信号量
查看>>
学习ThreadLocal
查看>>
在 Visual Studio 调试器中指定符号 (.pdb) 和源文件
查看>>
直接量
查看>>
leetcode 115. 不同的子序列(Distinct Subsequences)
查看>>
三元表达式
查看>>
Go初接触之libjpeg-turbo
查看>>
python--生成器协程运算
查看>>
php中文字符串截取乱码问题解决
查看>>
INFT 3030 Concurrent Programming
查看>>
小心了,这个设置会导致你的vm重启时被强制重装系统!
查看>>
邮票面值设计 (动态规划+DFS)
查看>>
解决INSTALL_FAILED_MISSING_SHARED_LIBRARY (转载)
查看>>
Linux内核高端内存
查看>>