Oracle学习笔记

Oracle提高

oracle 11g OCP  sql 题库解析汇总链接

https://www.cnblogs.com/niyuelong/p/7189877.html

创建序列

 

-- Create sequence
create sequence ISEQ$$_104784
minvalue 1
maxvalue 9999999999999999999999999999
start with 1
increment by 1
cache 20;

oracle的 listagg() WITHIN GROUP ()和wm_concat()函数使用

查询PackSn绑定的电芯

 --查询PackSn条码绑定的电芯条码
 select a.packsn,
        c.cell_sn
  from xwd_pack_cell_group_link a, xwd_mes_group_cell c
 where a.cell_group_id = c.group_id
   and a.packsn='PACKSN000002'

Oracle学习笔记

--使用  listagg() within group ()  将多行合并成一行

select a.packsn,
       listagg(c.cell_sn, ',') within group(order by cell_sn) as cell_sn
  from xwd_pack_cell_group_link a, xwd_mes_group_cell c
 where a.packsn = 'PACKSN000002'
   and a.cell_group_id = c.group_id
 group by packsn

Oracle学习笔记

 select a.packsn,
       wm_concat(c.cell_sn) cell_sn
  from xwd_pack_cell_group_link a, xwd_mes_group_cell c
 where a.cell_group_id = c.group_id
   and a.packsn='F8Y639600AHH1YD5S'
   group by a.packsn

Oracle学习笔记

 

select * from v$session_longops where start_time>sysdate-1/24

该视图记录了执行时间长于6秒的某个操作(这些操作可能是备份,恢复,收集统计信息,Hash Join,Sort ,Nested loop,Table Scan, Index Scan 等等),这个视图通常用来分析SQL运行缓慢的原因,配合V$SESSION视图。

1.必须将初始化参数 timed_statistics设置为true或者开启sql_trace

2.必须用ANALYZE或者DBMS_STATS对对象收集过统计信息

 

两次测试数据查询

with t1 as (
        select product_sn,test_value,load_time,row_number () over(partition by product_sn order by load_time ) cnt
        from t_wip_device_interface t
        where t.mo_no = '226-MO1903141144-1402'
        and t.test_item = 'IR'
        and t.test_result='0'
        order by t.product_sn
        ),
  t2 as ( select  product_sn,
                  max(case when cnt=1 then  test_value else null end ) ir1 ,
                  max(case when cnt=2 then  test_value else null end ) ir2
          from   t1 
          group by product_sn
   having count(*)=2)
   select t2.*,ir1-ir2 ir_diff from t2

 oracle唯一主键SYS_GUID()

select sys_guid() from dual

是Oracle 8i 后提供的函数。SYS_GUID产生并返回一个全球唯一的标识符(原始值)由16个字节组成。

Oracle中的MD5加密

MD5为不可逆散列算法,可用于存储用户密码,存储后不需要永远不需要知道明文。密码比较时只需将用户输入的密码再次转成MD5码与存储的相比较即可得知用户输入密码是否正确。

select utl_raw.cast_to_raw(dbms_obfuscation_toolkit.md5(input_string =>'123456')) as password from dual;

Oracle学习笔记

Oracle中的instr()函数

instr函数返回要截取的字符串在源字符串中的位置。只检索一次,也就是说从字符的开始到字符的结尾就结束

第一种用法:
--instr(源字符串, 目标字符串)
select instr('helloword','word') from dual  --返回结果:6 默认第一次出现'word'的位置
select instr('helloword','o') from dual     --返回结果:5 默认第一次出现'o'的位置
第二种用法
--instr(源字符串, 目标字符串, 起始位置, 匹配序号)
select instr('helloword','o',3) from dual  --返回结果:5 从位置3开始出现'o' 的位置
select instr('helloword','o',3,2) from dual   --返回结果:7 从位置3开始到结尾第2次出现字符'o'的位置

 Oracle中的字符替换

--replace 字符串级别的代替  
select replace('helloword', 'hello', '') from dual -- 返回结果:word
--translate 字符串级别的代替
select translate('helloword','lo','ab')from dual  --返回结果:heaabwbrd

 Oracle regexp_substr 函数

function regexp_substr(String, pattern, position, occurrence, modifier)
--srcstr     :需要进行正则处理的字符串

--pattern    :进行匹配的正则表达式

--position   :起始位置,从第几个字符开始正则表达式匹配(默认为1)

--occurrence :标识第几个匹配组,默认为1

--modifier   :模式('i'不区分大小写进行检索;'c'区分大小写进行检索。默认为'c'。)

select regexp_substr('helloZworldZ','[A-Z]+') from dual --返回结果:Z

truncate 和delete 区别是什么?

     delete 命令是从表中删除一行或者多行,truncate是从表中永远的删除每一行,truncate是将整个表删除后重新创建当前表结构

上一篇:-------------------使用百度地图开发平台(lbs),根据经纬度查询商圈出现的问题----------------------


下一篇:寒假学习(二)spark学习