webentwicklung-frage-antwort-db.com.de

SQL UPDATE alle Werte in einem Feld mit angehängter Zeichenfolge CONCAT funktionieren nicht

Folgendes möchte ich tun:

aktuelle Tabelle:

+----+-------------+  
| id | data        |  
+----+-------------+  
|  1 | max         |  
|  2 | linda       |  
|  3 | sam         |  
|  4 | henry       |  
+----+-------------+  

Mystery Query (so etwas wie "UPDATE table SET data = CONCAT(data, 'a')")

ergebnistabelle:

+----+-------------+  
| id | data        |  
+----+-------------+  
|  1 | maxa        |  
|  2 | lindaa      |  
|  3 | sama        |  
|  4 | henrya      |  
+----+-------------+  

das ist es! Ich muss es nur in einer einzigen Abfrage tun, kann aber scheinbar keinen Weg finden. Ich benutze mySQL auf Bluehost (ich denke, seine Version 4.1)

Vielen Dank an alle.

142
Fresheyeball

Das ist so ziemlich alles was Sie brauchen:

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)

Ich bin mir nicht sicher, warum Sie Probleme haben würden, obwohl ich dies auf 5.1.41 teste

232
Marc B

CONCAT mit einem Nullwert gibt Null zurück, daher ist die einfachste Lösung:

UPDATE myTable SET spares = IFNULL (CONCAT (Ersatzteile, "Zeichenfolge"), "Zeichenfolge")

33
andrejc
UPDATE mytable SET spares = CONCAT(spares, ',', '818') WHERE id = 1

ich arbeite nicht für mich.

ersatzteile sind standardmäßig NULL, aber ihre varchar

9

Ich habe es gelöst. Es hat sich herausgestellt, dass die Spalte nur eine begrenzte Anzahl von Zeichen enthält, die sie akzeptieren würde. Sie wurde geändert, und jetzt funktioniert die Abfrage einwandfrei.

7
Fresheyeball

konvertiere die NULL Werte mit einem leeren String indem du ihn in COALESCE einhüllst

"UPDATE table SET data = CONCAT(COALESCE(`data`,''), 'a')"

OR

Verwenden Sie stattdessen CONCAT_WS :

"UPDATE table SET data = CONCAT_WS(',',data, 'a')"
6
Rohan Khude
UPDATE 
    myTable
SET 
    col = CONCAT( col , "string" )

Konnte nicht klappen. Die Anforderungssyntax war korrekt, bei der Ausführung jedoch "0-Zeile betroffen".

Die Lösung war:

UPDATE 
    myTable 
SET 
    col = CONCAT( myTable.col , "string" )

Das hat funktioniert.

5
Jeremy Thille

Du kannst das:

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 funktioniert nicht, wenn field null ist.

1
Eric