1. 程式人生 > 其它 >帝國CMS:如何清空多個欄位中,包含某字串的值?

帝國CMS:如何清空多個欄位中,包含某字串的值?

場景描述:

採集時候,因為部分採集規則的問題,導致入庫的某欄位資料多了些無用字元。需要根據含有某個字串來判斷,並清空該值。

操作步驟:

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 table
where locate('string', name) > 0;

2.替換:

UPDATE table SET name1=value1,name2=value2 WHERE locate('sting', name1) > 0 OR locate('string', name2) > 0

文章參考:

MySQL如何判斷字串包不包含某個字串