Mysql
 sql >> Base de données >  >> RDS >> Mysql

Remplacer la valeur dans une chaîne délimitée par des virgules dans MySQL ?

Hmm... peut-être ça ?

SELECT @before := CONCAT(SUBSTRING_INDEX(`columnname`,',',3),','),
       @len := LENGTH(SUBSTRING_INDEX(`columnname`,',',4)+1
FROM `tablename` WHERE ...;

SELECT CONCAT(@before,'newstring',SUBSTRING(`columnname`,@len+1)) AS `result`
FROM `tablename` WHERE ...;

Remplacez les éléments au besoin, mais cela devrait à peu près suffire.

MODIFIER  :Fusionné en une seule requête :

SELECT
    CONCAT(
        SUBSTRING_INDEX(`columnname`,',',3),
        ',newstring,',
        SUBSTRING(`columnname`, LENGTH(SUBSTRING_INDEX(`columnname`,',',4)+1))
    ) as `result`
FROM `tablename` WHERE ...;

Ce +1 peut devoir être +2 , je ne suis pas sûr, mais cela devrait fonctionner.