简体   繁体   English

mysql用concat更新REPLACE

[英]mysql update REPLACE with concat

my table save same ID like that : 123,9901,888,99 我的表保存了相同的ID:123,9901,888,99

I need change some id in this field 我需要在此字段中更改一些ID

I using my sql : let 9901 change to 2001 我使用我的sql:让9901更改为2001

UPDATE `TALBE_` SET id_group = REPLACE (id_group, '9901', '2001');

That's work 那是工作

but, I change 99 to 100 但是,我将99更改为100

UPDATE `TALBE_` SET id_group = REPLACE (id_group, '99', '100');

My sql fidle had changed to 我的SQL Fidle已更改为

123, 10001 ,888, 100 123,10001,888,100

how to just change 99 -> 100, dont change 9901? 如何只更改99-> 100,不更改9901?

Do I need use concat? 我需要使用concat吗?

But I test some time still cant do that 但是我测试一段时间仍然不能做到这一点

You can use eg 您可以使用例如

UPDATE `TALBE_` SET id_group = 
    trim(',' from REPLACE(concat(',', id_group, ','), ',99,', ',100,')); 

her a version that seeks the number a replace it 她的版本号寻求替换

You must insert the search value 2 times 您必须插入2次搜索值

SELECT CONCAT_WS (',',
      SUBSTRING_INDEX(id_group, ',', FIND_IN_SET('888',id_group)-1)
      ,'100',
      SUBSTRING_INDEX(id_group, ',', --1* (LENGTH(REGEXP_REPLACE(id_group,'[0-9]','')) -(FIND_IN_SET('888',id_group)-1)))
      );

Sample 样品

MariaDB [(none)]> SELECT CONCAT_WS (',',
    ->       SUBSTRING_INDEX('123,9901,888,99', ',', FIND_IN_SET('888','123,9901,888,99')-1)
    ->       ,'100',
    ->       SUBSTRING_INDEX('123,9901,888,99', ',', --1* (LENGTH(REGEXP_REPLACE('123,9901,888,99','[0-9]','')) -(FIND_IN_SET('888','123,9901,888,99')-1)))
    ->       );
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| CONCAT_WS (',',
      SUBSTRING_INDEX('123,9901,888,99', ',', FIND_IN_SET('888','123,9901,888,99')-1)
      ,'100',
      SUBSTRING_INDEX('123,9901,888,99', ',', --1* (LENGTH(REGEXP_REPLACE('123,9901,888,99','[0-9]','')) -(FIND_IN_SET('888','123,9901,888,9 |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 123,9901,100,123                                                                                                                                                                                                                                                 |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

MariaDB [(none)]>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM