- 锁表处理
https://www.cnblogs.com/pugang/p/13275696.html - 储存过程
https://zhuanlan.zhihu.com/p/137896709 - 联合索引失效
https://blog.csdn.net/qq_35275233/article/details/87888809
实际操作
- 更新表
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)
- 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个字符开始截取后面所有的字符串。
- instr
instr('源字符串' , '目标字符串' ,'开始位置','第几次出现')
- 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"
- 对大字段做模糊搜索
效率不高,可以对大字段进行处理 - 对日期进行处理
| 表头 | 表头 |
| ---- | ---- |
| 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格式 | 单元格 |