2017-08-01 1 views
2

Comment définir une valeur particulière de colonne à l'aide de la mise à jour dans mysql?Mysql: Définir une valeur particulière de la colonne à l'aide de la mise à jour

Après mon code:

update contact set admin_id = ' ' where admin_id like '%,519,%' and id='31' 

enter image description here

J'ai une table ayant nommé contact et j'ai défini un nom de colonne admin_id comme indiqué dans l'image. J'ai un id c'est-à ,519,520,521 et maintenant je veux supprimer seulement 519 de admin_id et voulez seulement ,520,521 à l'intérieur de la colonne admin_id.

Quelle devrait être la requête pour y parvenir?

+1

utilisez la fonction 'replace' – ASR

+0

Etes-vous sûr que vous voulez être à stocker des valeurs séparées par des virgules? C'est notoirement mauvaise conception. – Strawberry

Répondre

3

Cela devrait fonctionner -

update contact 
set admin_id = replace(admin_id, '519,', '') 
where admin_id like '%,519,%' 
and id='31' 

replace()

+0

comment utiliser cette requête dans le modèle codeigniter @Sougata Bose $ re = replace (admin_id, '$ client_id,', ''); \t \t $ data = array ( \t \t \t \t 'admin_id' => $ re \t \t \t \t); $ Where = "admin_id comme '% $ client_id%' et id = '$ id'"; \t \t \t \t $ this-> db-> où ($ où); \t \t $ this-> db-> update ('contact', $ data); – omkara

+0

Je ne suis pas sûr. Mais il doit y avoir un moyen d'implémenter l'expression brute –

+0

okk mais quand je cours cette requête il me montre l'erreur et c.-à-d. Appeler à la fonction non définie replace() – omkara

3

Vous pouvez utiliser MySQL REPLACE() pour atteindre cet

UPDATE contact SET admin_id = REPLACE(admin_id, ',519,', ',') 
WHERE admin_id LIKE '%,519,%' AND id='31' 
3

Je suppose que quelque chose comme cela devrait fonctionner (mais n'a pas testé ..)

UPDATE contact 
SET admin_id = REPLACE(admin_id, '519', '') 
WHERE admin_id like '%,519,%' and id='31' 

vous pouvez trouver plus ici:

https://dev.mysql.com/doc/refman/5.7/en/replace.html