一、在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的查詢中怎麼截取字符串:
-
從左開始截取字符串left(str, length);
-
從右開始截取字符串right(str, length);
-
截取字符串substring(str, pos, length),說明:substring(被截取字段,從第幾位開始截取,截取長度);
-
按關鍵字截取字符串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,領取馬雲的紅包,使用餘額寶消費可抵扣,大家好,纔是真的好。