帝國CMS:如何清空多個欄位中,包含某字串的值?
阿新 • • 發佈:2022-12-12
場景描述:
採集時候,因為部分採集規則的問題,導致入庫的某欄位資料多了些無用字元。需要根據含有某個字串來判斷,並清空該值。
操作步驟:
1.備份資料庫【十分重要,必須操作!】;
2.輸入命令檢視含有該字串的資料條數;
SELECT * FROM `***_ecms_app` WHERE locate('">官網入口', downurl) > 0 OR locate('">官網入口', downurli) > 0
3.輸入命令,進行清空替換;
UPDATE `***_ecms_app` SET `downurl`='',`downurli`='' WHERE locate('">官網入口', downurl) > 0 OR locate('">官網入口', downurli) > 0
4.進入CMS後臺重新整理全部資料即可。
案例總結:
該案例中使用到MySQL提供的一個字串函式locate(substr,str)函式,用於返回str中substr所在的位置索引,如果找到了,則返回一個大於0的數,否則返回0。還有另一個函式也可以達到此目的,即find_in_set();
函式find_in_set(str1,str2),用於返回str2中str1所在的位置索引,如果找到了,則返回true(1),否則返回false(0),其中str2必須以半形符號的逗號【,】分割開。
" select * from user where find_in_set('yanggb', hobby); " 【匹配的字串作為第一引數時,適用的場景是找到hobby中存在yanggb的記錄(hobby為多個以逗號隔開的值)。】
或者
" select * from user where find_in_set(hobby, 'yanggb1,yanggb2,yanggb3'); "【匹配的字串作為第二引數時,適用的場景是找到hobby中有yanggb1、yanggb2和yanggb3其中一個的記錄(hobby為單個值)。】
命令模式:
1.查詢:
select * from tablewhere locate('string', name) > 0;
2.替換:
UPDATE table SET name1=value1,name2=value2 WHERE locate('sting', name1) > 0 OR locate('string', name2) > 0
文章參考:
MySQL如何判斷字串包不包含某個字串