Voici ce que je veux faire:
tableau actuel:
+----+-------------+
| id | data |
+----+-------------+
| 1 | max |
| 2 | linda |
| 3 | sam |
| 4 | henry |
+----+-------------+
Requête mystère (quelque chose comme "UPDATE table SET data = CONCAT(data, 'a')"
)
table résultante:
+----+-------------+
| id | data |
+----+-------------+
| 1 | maxa |
| 2 | lindaa |
| 3 | sama |
| 4 | henrya |
+----+-------------+
c'est ça! Je dois juste le faire en une seule requête, mais je n'arrive pas à trouver un moyen. J'utilise mySQL sur bluehost (je pense que sa version 4.1)
Merci tout le monde.
C'est à peu près tout ce dont vous avez besoin:
mysql> select * from t;
+------+-------+
| id | data |
+------+-------+
| 1 | max |
| 2 | linda |
| 3 | sam |
| 4 | henry |
+------+-------+
4 rows in set (0.02 sec)
mysql> update t set data=concat(data, 'a');
Query OK, 4 rows affected (0.01 sec)
Rows matched: 4 Changed: 4 Warnings: 0
mysql> select * from t;
+------+--------+
| id | data |
+------+--------+
| 1 | maxa |
| 2 | lindaa |
| 3 | sama |
| 4 | henrya |
+------+--------+
4 rows in set (0.00 sec)
Vous ne savez pas pourquoi vous auriez des problèmes, bien que je teste ceci sur 5.1.41
CONCAT avec une valeur null renvoie null, la solution la plus simple est:
UPDATE myTable SET spares = IFNULL (CONCAT (pièces de rechange, "chaîne"), "chaîne")
UPDATE mytable SET spares = CONCAT(spares, ',', '818') WHERE id = 1
ne travaille pas pour moi.
spares est NULL
par défaut mais son varchar
Résolu. Il s'avère que la colonne avait un ensemble limité de caractères qu'elle accepterait, l'a modifiée et que la requête fonctionne désormais correctement.
convertir les valeurs NULL
avec une chaîne vide en l'enveloppant dans COALESCE
"UPDATE table SET data = CONCAT(COALESCE(`data`,''), 'a')"
OR
Utilisez CONCAT_WS à la place:
"UPDATE table SET data = CONCAT_WS(',',data, 'a')"
UPDATE
myTable
SET
col = CONCAT( col , "string" )
Impossible de résoudre le problème. La syntaxe de la requête était correcte, mais "0 ligne affectée" lors de l'exécution.
La solution était:
UPDATE
myTable
SET
col = CONCAT( myTable.col , "string" )
Celui-là a fonctionné.
Tu peux le faire:
Update myTable
SET spares = (SELECT CASE WHEN spares IS NULL THEN '' ELSE spares END AS spares WHERE id = 1) + 'some text'
WHERE id = 1
field = field + value ne fonctionne pas lorsque field est null.