[英]How to replace a regex pattern in MySQL
我有一個名為myTable
的表,其中有一列名為col1
。 此列包含以下格式的數據:(1 或 2 位數字)(連字符)(8 位數字)。
我想替換此列中的所有數據並將連字符之前的所有內容替換為 4,因此這是一個示例:
--------------------------------
| old values | New Values |
--------------------------------
| 1-654283568 => 4-654283568 |
| 2-467862833 => 4-467862833 |
| 8-478934293 => 4-478934293 |
| 12-573789475 => 4-573789475 |
| 16-574738575 => 4-574738575 |
--------------------------------
我正在使用 MySQL 5.7.19,我相信REGEXP_REPLACE
在 MySQL 版本REGEXP_REPLACE
中可用......不確定如何實現?
你不需要正則表達式; 您可以使用SUBSTRING_INDEX
提取連字符后的所有內容並將4-
連接到:
UPDATE myTable
SET col1 = CONCAT('4-', SUBSTRING_INDEX(col1, '-', -1))
無論連字符后的字符數如何,這都將起作用。
看着你的模式似乎你可以避免正則表達式
update myTable
set col1 = concat('4-', right(col1,8))
要么
update myTable
set col1 = concat('4', right(col1,9))
SELECT CONCAT( @new_prefix, SUBSTRING(old_value FROM LOCATE('-', old_value)) ) AS new_value
UPDATE sourcetable
SET fieldname = CONCAT( '4', SUBSTRING(fieldname FROM LOCATE('-', fieldname)) )
WHERE LOCATE('-', fieldname)
/* AND another conditions */
試試這個:
UPDATE testing SET val=REPLACE(val,SUBSTRING(val,1,LOCATE('-',val)),'4-');
在這里小提琴: https : //www.db-fiddle.com/f/4mU5ctLh8NB9iKSKZF9Ue2/2
使用LOCATE
查找“-”位置,然后使用SUBSTRING
僅獲取“-”的前部。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.