zoukankan      html  css  js  c++  java
  • SQL集锦

        ---批量删除重复数据 SQL 
    --    delete from  TT_VS_ORDER_HISTORY where HISTORY_ID in (
    --    select HISTORY_ID from (
    --    select count(1) num ,min(HISTORY_ID) HISTORY_ID, ORDER_ID, CHANGE_STATUS from TT_VS_ORDER_HISTORY 
    --    where CHANGE_STATUS ='70031006'  group by ORDER_ID,CHANGE_STATUS 
    --    ) where num >1
    --    );
    
        --批量插入
        --insert into BB select distinct remark from TT_VS_ORDER ;
        
        --create table BB like AA ;
        
        --select distinct remark into CGCSLDMS.BB from TT_VS_ORDER;
        
        --数据库表备份
        --create table TT_VS_SALES_REPORT_20160727 like TT_VS_SALES_REPORT ;
        --insert into TT_VS_SALES_REPORT_20160727 select * from TT_VS_SALES_REPORT;
        
        --数据库表从备份表中还原
        --delete from TT_VS_SALES_REPORT;
        --insert into TT_VS_SALES_REPORT select * from TT_VS_SALES_REPORT_20160727;
        
        
        
        --清空表数据
        delete from AA;
        
         --批量更新
         --第一种  256
         update TT_VS_ORDER t set t.DEAL_ORDER_AFFIRM_DATE = (
         select  tvoh.CREATE_DATE from TT_VS_ORDER_HISTORY tvoh where t.ORDER_ID = tvoh.ORDER_ID and tvoh.CHANGE_STATUS ='70031006' 
         )
         where exists (select 1 from TT_VS_ORDER_HISTORY t1 where t1.CHANGE_STATUS = '70031006' and t1.ORDER_ID = t.ORDER_ID );
         
         --第二种merge into  146
         merge into TT_VS_ORDER t
          using (select b.ORDER_ID , b.CREATE_DATE from TT_VS_ORDER_HISTORY b where b.CHANGE_STATUS ='70031006') a
             on (t.order_id = a.order_id)
           when matched then
             update set t.DEAL_ORDER_AFFIRM_DATE = a.CREATE_DATE; 
             
         --第三种 利用视图做批量更新
         --error 42807
    --     update ( select tvo.DEAL_ORDER_AFFIRM_DATE, tvoh.CREATE_DATE from TT_VS_ORDER tvo
    --     inner join TT_VS_ORDER_HISTORY tvoh on tvo.ORDER_ID = tvoh.ORDER_ID 
    --     where tvoh.CHANGE_STATUS = '70031006' )
    --     set DEAL_ORDER_AFFIRM_DATE = CREATE_DATE ;
         
         
         --无条件同时插入
         --DB2不支持
    --     INSERT ALL
    --      INTO AA( REMARK) VALUES(REMARK1)
    --      INTO BB( REMARK) VALUES(REMARK1)
    --     SELECT DISTINCT REMARK1 FROM TT_VS_ORDER ;
    
        --数值校验    
        --正整数校验  - 不为正整数
        SELECT * FROM TM_DEALER T2 WHERE LENGTH(TRIM(TRANSLATE(T2.DEALER_CODE,'','0123456789'))) > 0;
        --正整数校验  - 为正整数
        SELECT * FROM TM_DEALER T2 WHERE LENGTH(TRIM(TRANSLATE(T2.DEALER_CODE,'','0123456789'))) = 0;
        
        --select TRIM(TRANSLATE(dealer_code,'','0123456789')) from tm_dealer
        
        
        --小数校验  - 不为小数或不是正确的小数
        SELECT * FROM AA WHERE LENGTH(TRIM(TRANSLATE(REMARK,'','.0123456789'))) > 0 
              OR (LENGTH(TRIM(TRANSLATE(REMARK,'','.0123456789'))) = 0  AND LENGTH(TRIM(TRANSLATE(TRANSLATE(REMARK,'A','.'),'','0123456789'))) > 1);
              
        --小数校验  - 为小数或正整数
        SELECT * FROM AA WHERE LENGTH(TRIM(TRANSLATE(REMARK,'','.0123456789'))) = 0 
              AND LENGTH(TRIM(TRANSLATE(TRANSLATE(REMARK,'A','.'),'','0123456789'))) < 2;
              
        insert into AA values('2016/07/27');  
        delete from AA
        
        --非空数据校验
        select * from aa where REMARK is null or REMARK = '';
        
        --select * from aa where nvl(trim(REMARK),'0') = '0';
        
        select * from aa where length(nvl(trim(REMARK),'')) = 0;
        
        --判断数据是否存在  存在用 exists 不存在用 not exists
        select * from AA t1 where not exists (
          select 1 from TM_DEALER t2 where t1.TEXT = t2.DEALER_CODE
        )
        
        --重复数据校验 先查出重复数据,然后查出所有重复数据并讲行号拼接成一列(行转列)
        select LISTAGG(t1.TEXT , ',') WITHIN GROUP(ORDER BY t1.TEXT) 行号 from AA t1 where exists (
          select 1 from (select count(1),TEXT from AA group by TEXT having count(1) >1 ) t2 where t1.TEXT = t2.TEXT
        )
        group by t1.TEXT;
        
        --时间格式验证
        select iSdate(TEXT),TEXT  from AA;
        
        --替换所有字符
        select rpad('#',length('CL10AR'),'#') from SYSIBM.DUAL ;
        
        --替换字符
        select replace('##10##','#','') from SYSIBM.DUAL ;   
        
        select trim(translate('##10##','','#')) from SYSIBM.DUAL ; 
        
        
        SELECT TO_DATE(TEXT,'YYYY-MM-DD HH24') FROM AA;
        
        insert into AA values('2016-7-27');
        delete from AA;
        
        
        select length(TRANSLATE(TRANSLATE(REMARK,'A','.'),'','0123456789')) from AA;
        
        select MSRP_PRICE, ORDER_NO from tt_vs_order where TT_VS_ORDER.MSRP_PRICE = '';
        
        
    
         
         
         
    --时间验证函数
    CREATE OR REPLACE FUNCTION CGCSLDMS.ISDATE ( P_DATE VARCHAR(19) )
      RETURNS INTEGER
    BEGIN
      -- 错误标志
      DECLARE v_result INT;
      DECLARE v_date  DATE;
      -- 定义错误处理
      -- 如果发生错误,继续处理
      -- 但是把标志位设置为 0
      DECLARE CONTINUE HANDLER
      FOR
      SQLEXCEPTION SET v_result=0;
      -- 错误标志,首先设置为正常.
      SET v_result = 1;
      IF LENGTH(p_date)=8 THEN 
        SET v_date = TO_DATE(p_date, 'YYYY-MM-DD');
      ELSEIF LENGTH(p_date)=9 THEN 
        SET v_date = TO_DATE(p_date, 'YYYY-MM-DD');
      ELSEIF LENGTH(p_date)=10 THEN 
        IF LENGTH(TRIM(TRANSLATE(p_date,'','0123456789'))) = 0 THEN
          SET v_date = TO_DATE(p_date, 'YYYY-MM-DD HH24');
        ELSE
          SET v_date = TO_DATE(p_date, 'YYYY-MM-DD');
        END IF;
      ELSEIF LENGTH(p_date)=12 THEN
        SET v_date = TO_DATE(p_date, 'YYYY-MM-DD HH24:MI');
      ELSEIF LENGTH(p_date)=13 THEN
        SET v_date = TO_DATE(p_date, 'YYYY-MM-DD HH24');
      ELSEIF LENGTH(p_date)=16 THEN
        SET v_date = TO_DATE(p_date, 'YYYY-MM-DD HH24:MI');
      ELSE
        SET v_date = TO_DATE(p_date, 'YYYY-MM-DD HH24:MI:SS');
      END IF;
      return v_result;
    END;
  • 相关阅读:
    Problem F
    Problem L
    Problem L
    Problem B
    Problem B
    读书笔记-Java设计模式
    读书笔记-内存初始化和清理
    读书笔记- 一切都是对象
    Android多点触控技术实战,自由地对图片进行缩放和移动
    Native开发与JNI机制详解
  • 原文地址:https://www.cnblogs.com/Linger-wj/p/8509981.html
Copyright © 2011-2022 走看看