2017-06-23 75 views
0

是否可以用另一個字符串替換字符串的特定部分? 例如我有一個包含文件路徑的列,我將文件夾下載到門戶(在我的物理硬盤上)更名爲download_portal,所以我必須更改數千條數據庫記錄中的路徑。SQL - 替換多個記錄中字符串的特定部分

實例記錄之前和之後:

/fileadmin/download portal/test/myfile.jpg 

後:

/fileadmin/download_portal/test/myfile.jpg 

假設這是我的表水果

id | path 
1 | /fileadmin/download portal/test/apple.jpg 
2 | /fileadmin/download portal/test/banana.jpg 
3 | /fileadmin/download portal/test/pineapple.jpg 

我怎樣才能改變download portaldownload_portal在每個記錄中使用SQL?我可以通過使用regular expressions來解決嗎?

+0

閱讀有關更換funtion。請添加您正在使用的dbms標籤 – Jens

+0

['replace'](https://dev.mysql.com/doc/refman/5.6/en/string-functions.html#function_replace)? – Passerby

回答

4

我不認爲你一定需要這裏的正則表達式替換。只需要正常更換download portaldownload_portal即可正常工作。下面UPDATE應該在大多數數據庫工作:

UPDATE fruits 
SET path = REPLACE(path, '/download portal/', '/download_portal/') 
WHERE path LIKE '%/download portal/%' 

注:我想尋找/download portal/是更嚴格,更安全,不僅僅是純文本。這是因爲它消除了意外更換download portal的機會,該機會顯示爲其他較大路徑名稱的一部分。

+0

這工作thx!我想知道這是否也適用於正常表達。 – Black

+0

上面的查詢應該可以正常工作。 –

+0

如果你真的在使用MySQL,那麼答案是否定的,因爲MySQL不支持正則表達式替換,至少不是沒有編寫自己的用戶定義函數。也許你很幸運,因爲正常的替換應該涵蓋你的用例。 –

1

如果您使用的是SSMS,您可以使用REPLACE Function來獲得您想要的。

更新表名SET ColumnToChange = REPLACE(ColumnToChange, 'x_name', 'x_myname')