2015-06-01 24 views
0

我正在嘗試尋找一種方法來替換我的數據庫中的特定模式在多個表和列中的所有事件,爲此我需要創建一些方法來執行此操作,不需要通過腳本完成,只需要一些SQL代碼即可完成。MySQL phpMyAdmin替換多個表中的所有類似模式

例如,我想用'www'替換所有出現的'v2',但不知道如何做到這一點。

我不是在尋找一個教程,只是一些關於如何做以及如何編寫所需SQL腳本的指導。

我如何去這樣做呢?

+0

爲什麼不找一個教程? – Strawberry

+0

如果你正在尋找一個SQL解決方案,你爲什麼把它標記爲phpMyAdmin?您可以使用phpMyAdmin的搜索功能來完成此操作,但不是您要查找的內容,所以我不認爲標籤確實適用。 –

回答

0

可以使用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_NAMETABLE_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,有關選擇其中一個數據值存在的所有行,並從我現在已經失去了,跟蹤黯然(對不起原來的編劇)其他一些堆棧溢出的答案

說實話,我認爲這個問題可能是this的副本,除了this雖然...