web-dev-qa-db-fra.com

MySQL UPDATE ajoute les données dans la colonne

J'ai besoin de mettre à jour le nom du fichier (nomcol1)

S'il y a déjà des données, je dois les ajouter avec les valeurs 'a, b, c' Si c'est NULL, j'ai besoin d'ajouter les valeurs 'a, b, c'

Je sais qu'il existe un argument CONCAT, mais je ne sais pas quelle serait la syntaxe SQL.

update tablename set col1name = concat(ifnull(col1name, 'a,b,c'), 'a,b,c')

Est-ce que ce qui précède est correct?

27
Robert Hoffmann

Essayez cette requête:

update tablename set col1name = concat(ifnull(col1name,""), 'a,b,c');

Reportez-vous cette démo sql fiddle.

55
Dhinakar

Cela devrait le faire:

update tablename set
col1name = if(col1name is null, 'a,b,c', concat(col1name, 'a,b,c'));


Ou vous pourriez vous simplifier la vie en deux étapes:

update tablename set col1name = '' where col1name is null;

puis

update tablename set col1name = concat(col1name, 'a,b,c');
6
Bohemian

Vous pouvez utiliser les éléments suivants:

update yourtable 
set yourcol = case when yourcol is null then 'a,b,c'
                  else concat(yourcol, ' a,b,c') end

Voir SQL Fiddle avec Demo

Échantillon de données:

CREATE TABLE yourtable(`yourcol` varchar(50));

INSERT INTO yourtable(`yourcol`)
VALUES  ('sadsdh'),
    (NULL);

Reviendra:

|      YOURCOL |
----------------
| sadsdh a,b,c |
|        a,b,c |
4
Taryn

IFNULL (colonne, ''), enregistre toutes les instructions if, simplifie grandement le SQL!

MySQL 5.6 Configuration du schéma:

CREATE TABLE tablename
    (`yourcol` varchar(50))
;

INSERT INTO tablename
    (`yourcol`)
VALUES
    ('sadsdh'),
    (NULL)
;

UPDATE tablename SET
    yourcol = CONCAT( IFNULL(yourcol,' '), 'somevalue' )
;

Requête:

select *
from tablename

Résultats:

|         yourcol |
|-----------------|
| sadsdhsomevalue |
|       somevalue |
0
MrMesees