我正在嘗試尋找一種方法來替換我的數據庫中的特定模式在多個表和列中的所有事件,爲此我需要創建一些方法來執行此操作,不需要通過腳本完成,只需要一些SQL代碼即可完成。MySQL phpMyAdmin替換多個表中的所有類似模式
例如,我想用'www'替換所有出現的'v2',但不知道如何做到這一點。
我不是在尋找一個教程,只是一些關於如何做以及如何編寫所需SQL腳本的指導。
我如何去這樣做呢?
我正在嘗試尋找一種方法來替換我的數據庫中的特定模式在多個表和列中的所有事件,爲此我需要創建一些方法來執行此操作,不需要通過腳本完成,只需要一些SQL代碼即可完成。MySQL phpMyAdmin替換多個表中的所有類似模式
例如,我想用'www'替換所有出現的'v2',但不知道如何做到這一點。
我不是在尋找一個教程,只是一些關於如何做以及如何編寫所需SQL腳本的指導。
我如何去這樣做呢?
只是引導你在一個方向。您可以使用替換功能:
UPDATE MyTable
SET StringColumn = REPLACE (StringColumn, 'SearchForThis', 'ReplaceWithThis')
WHERE SomeOtherColumn LIKE '%PATTERN%';
在先前的帖子有更多的信息: How can I use mySQL replace() to replace strings in multiple records?
可以使用select CONCAT(...) from information_schema.columns
來生成每個表列的組合,其中...
是一個更新查詢更新查詢中使用的字符串的組合,以及數據庫的列名稱組合。
例如:
select CONCAT("UPDATE ", TABLE_NAME, " SET ", COLUMN_NAME, "=REPLACE(",COLUMN_NAME,"'[string-to-find]'","'[string-that-will-replace-it]'",");") FROM information_schema.columns where table_schema = 'your_db';
COLUMN_NAME
和TABLE_NAME
都在information_schema.columns
表中的列,由MySQL
上述查詢的記錄應該使結果集:
UPDATE table1 SET field1 = replace(field1,'[string-to-find]','[string-that-will-replace-it]');
UPDATE table1 SET field2 = replace(field2,'[string-to-find]','[string-that-will-replace-it]');
UPDATE table2 SET field3 = replace(field3,'[string-to-find]','[string-that-will-replace-it]');
...
你可以將SELECT
語句的結果輸出到文件,然後該文件變爲一個腳本來執行。或者,如果您使用phpadmin或任何其他編程語言作爲接口,則可以遍歷結果集並執行結果集中每行的值。
我上心從MikeW的回答here,有關選擇其中一個數據值存在的所有行,並從我現在已經失去了,跟蹤黯然(對不起原來的編劇)其他一些堆棧溢出的答案
爲什麼不找一個教程? – Strawberry
如果你正在尋找一個SQL解決方案,你爲什麼把它標記爲phpMyAdmin?您可以使用phpMyAdmin的搜索功能來完成此操作,但不是您要查找的內容,所以我不認爲標籤確實適用。 –