oracle

作者: 追风的云月 | 来源:发表于2024-02-27 15:19 被阅读0次
  1. 锁表处理
    https://www.cnblogs.com/pugang/p/13275696.html
  2. 储存过程
    https://zhuanlan.zhihu.com/p/137896709
  3. 联合索引失效
    https://blog.csdn.net/qq_35275233/article/details/87888809

实际操作

  1. 更新表
SET t1.column1 = (SELECT t2.column1 FROM table2 t2 WHERE t2.id = t1.id),
t1.column2 = (SELECT t2.column2 FROM table2 t2 WHERE t2.id = t1.id)
WHERE EXISTS (SELECT 1 FROM table2 t2 WHERE t2.id = t1.id);

SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)
  1. substr
  格式1: substr(string string, int a, int b);

  格式2:substr(string string, int a) ;

解析:

    格式1:
        1、string 需要截取的字符串
        2、a 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取)
        3、b 要截取的字符串的长度

    格式2:
        1、string 需要截取的字符串
        2、a 可以理解为从第a个字符开始截取后面所有的字符串。
  1. instr
 instr('源字符串' , '目标字符串' ,'开始位置','第几次出现')
  1. select时做逻辑处理
SELECT IF(TRUE,1+1,1+2);
-> 2
 
SELECT IF(FALSE,1+1,1+2);
-> 3
 
SELECT IF(STRCMP("111","222"),"不相等","相等");
-> 不相等
 
-- 查找出售价为 50 的书,如果是 java 书的话,就要标注为 已售完:
select *,if(book_name='java','已卖完','有货') as product_status from book where price =50

SELECT IFNULL(NULL,"11");
-> 11
 
SELECT IFNULL("00","11");
-> 00

SELECT t.status,
  CASE t.status
  WHEN '失败' THEN '捕获失败'
  ELSE '捕获成功' END "legendValue"
  1. 对大字段做模糊搜索
    效率不高,可以对大字段进行处理
  2. 对日期进行处理
    | 表头 | 表头 |

| ---- | ---- |

| date格式 | to_char,format格式是yyyy-MM-dd 或者yyyyMMdd都可以,加上时分秒也可以 |
| timestamp格式 | 单元格 |
| date String格式 | 直接to_date,format格式就看是源格式,如果to_date(20240313, ‘yyyyMMdd’), 那么出来的格式是 2024-03-13 00:00:00 |
| timestamp String格式 | 2024-03-13 00:00:00.000,先substr截取1,19,然后to_date |
| date格式 | 单元格 |
| timestamp格式 | 单元格 |

oracle批量处理

相关文章

网友评论

      本文标题:oracle

      本文链接:https://www.haomeiwen.com/subject/tziyadtx.html