| city |
| ---------------- |
| Chicago (IL IN) |
| New (NY) York |
| (ARZ) Phoenix |有没有办法删除(IL IN)、(NY)和(ARZ)
我已经尝试了下面的代码,但它不能工作。
UPDATE table
SET city = REPLACE(city, '(%)', '')
WHERE city LIKE '%(%)%'发布于 2021-11-02 00:46:27
您可以使用regexp_replace
update table set city = regexp_replace(city, '\\(\\w{2,}(\\s\\w{2,})*\\)', '')发布于 2021-11-02 01:09:29
这可能会起作用,如果有额外的空间,它也会删除。
update table1
set city = regexp_replace(city, '\\([\\w\\s]+\\)\\s*|\\s*\\([\\w\\s]+\\)', '')
where city like '%(%)%'发布于 2021-11-02 00:49:10
试着运行这个命令,看看结果是什么:
SELECT city,
CONCAT(SUBSTRING(city,1,LOCATE('(',city)-1),SUBSTRING(city,LOCATE(')',city)+2)) AS trimmed_city
FROM mytable
WHERE city LIKE '%(%)%';如果trimmed_city的结果是您想要的,那么您可以像这样更新它:
UPDATE table
SET city=CONCAT(SUBSTRING(city,1,LOCATE('(',city)-1),SUBSTRING(city,LOCATE(')',city)+2)
WHERE city LIKE '%(%)%';这可能适用于不支持REGEXP_REPLACE()的旧MySQL版本,比如@Ajax1234's answer。
https://stackoverflow.com/questions/69804235
复制相似问题