TP5、mysql相關操作整理

一、在mysql更新語句中使用乘法:


->update([

'status' => Db::raw('`status`*(-1)'),   
//status值爲1和-1,代表相反的狀態,建議判斷當前狀態,避免兩人同時操作時狀態無改變

]);

 

二、判斷字符是否在另一個字符串中出現:


$groups['rules']='1,3,5,7,9';

//有漏洞,比如權限值爲2,權限組中有21會判斷有2的權限:
->field('instr(\''.$groups['rules'].'\',number) as ischecked')

//應改成FIND_IN_SET();
->field('FIND_IN_SET(number,\''.$groups['rules'].'\') as ischecked')

參考鏈接:mysql中find_in_set()函數的使用--https://www.cnblogs.com/xiaoxi/p/5889486.html

 

三、mysql中if函數用法及時間戳轉換日期格式:


->field('if(p.status=0,"否","是") as status,from_unixtime(p.create_time) as time');

->field(',CASE WHEN sid in (1,2) THEN \'優秀\' WHEN sid in (3,4) THEN \'一般\' ELSE \'較差\' END status');  //在此語句中,status相當於as 出來一個新字段,原數據表沒有

參考鏈接:MySQL函數大全及用法示例  https://www.cnblogs.com/xuyulin/p/5468102.html

 

四、mysql的查詢中怎麼截取字符串:

  1. 從左開始截取字符串left(str, length);

  2. 從右開始截取字符串right(str, length);

  3. 截取字符串substring(str, pos, length),說明:substring(被截取字段,從第幾位開始截取,截取長度);

  4. 按關鍵字截取字符串substring_index(str,delim,count),說明:substring_index(被截取字段,關鍵字,關鍵字出現的次數)。


->join('city c','substring_index(substring_index(area,\',\',2),\',\',-1)=c.c_id')

參考鏈接:https://zhidao.baidu.com/question/1757749164112887508.html

 

五、mysql批量修改表前綴:

1、先登入你的Navicat for mysql中,新建查詢,在查詢編輯器內執行命令:
 


Select CONCAT('ALTER TABLE ', table_name, ' RENAME TO ', table_name,';' )

FROM information_schema.tables

Where table_name LIKE 'wp_%';

得到多條結果,如:


ALTER TABLE table_name RENAME TO table_name;

2、複製上面的結果到記事本,將TO table_批量替換成TO new_

3、再複製記事本的內容,粘帖到查詢編輯器內,執行命令即可。

 

參考鏈接:https://blog.csdn.net/forest_fire/article/details/50944231

 

六、navicat複製一個表裏所有的字段的快捷命令

1、先登入你的Navicat for mysql中,新建查詢,在查詢編輯器內執行命令:


select group_concat(COLUMN_NAME) from information_schema.COLUMNS where table_name = '表名';

親測有效,不過似乎是雙份的,如果是工資就好了。

參考鏈接:https://blog.csdn.net/superit401/article/details/69938983

 

七、MYSQL中批量替換某個字段的部分數據

1、示例,清除(替換爲空)掉數據表中混雜的換行符回車符:


UPDATE .`test` SET `code` = REPLACE(`code`,'\r\n','') WHERE `code` LIKE '%\r\n%';

參考鏈接:https://blog.csdn.net/qq_14997169/article/details/53241395

親測有效。

八、GROUP BY分組,通過GROUP_CONCAT、IF函數,從分組中獲取想要的結果 :

SELECT
    T.*, if(GROUP_CONCAT(IF(T.s_code='S2495',1,null)),1,0) as LAY_CHECKED
FROM
    `group_test` `T`
WHERE
    `T`.`b_code` = 'B0100' && `T`.`i_code` = 'I2833'
GROUP BY
    T.b_code,
    T.i_code
LIMIT 0,
 1000;

如此文章對你有幫助,請打開支付寶搜索535149388,領取馬雲的紅包,使用餘額寶消費可抵扣,大家好,纔是真的好。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章