SQL aktualizuje wszystkie wartości w polu z dołączonym ciągiem znaków CONCAT nie działa
Oto co chcę zrobić:
Tabela bieżąca:
+----+-------------+
| id | data |
+----+-------------+
| 1 | max |
| 2 | linda |
| 3 | sam |
| 4 | henry |
+----+-------------+
Tajemnicze zapytanie (coś w rodzaju "UPDATE table SET data = CONCAT(data, 'a')"
)
Tabela wynikowa:
+----+-------------+
| id | data |
+----+-------------+
| 1 | maxa |
| 2 | lindaa |
| 3 | sama |
| 4 | henrya |
+----+-------------+
To wszystko! Muszę to zrobić jednym zapytaniem, ale nie mogę znaleźć sposobu. Używam mySQL na bluehost (myślę, że jego wersja 4.1)
Dziękuję wszystkim. 7 answers
To prawie wszystko, czego potrzebujesz:
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)
Nie wiem dlaczego mielibyście problemy, chociaż testuję to na 5.1.41
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-08 21:46:14
CONCAT z wartością null zwraca null, więc najprostszym rozwiązaniem jest:
UPDATE myTable SET spares = IFNULL (CONCAT (spares, "string"),"string")
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-14 11:38:10
UPDATE mytable SET spares = CONCAT(spares, ',', '818') WHERE id = 1
Nie działa dla mnie.
Spares jest NULL
domyślnie, ale jego varchar
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-29 08:41:57
Rozwiązałem. Okazuje się, że kolumna miała ograniczony zestaw znaków, które zaakceptowałaby, zmieniła i teraz Zapytanie działa dobrze.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-09 03:20:09
Konwertuj wartości NULL
z pustym łańcuchem, owijając je w COALESCE
"UPDATE table SET data = CONCAT(COALESCE(`data`,''), 'a')"
Lub
Użyj CONCAT_WS zamiast:
"UPDATE table SET data = CONCAT_WS(',',data, 'a')"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-04 10:02:13
UPDATE
myTable
SET
col = CONCAT( col , "string" )
Nie udało się. Składnia żądania była poprawna, ale "linia 0 miała wpływ" podczas wykonywania.
Rozwiązaniem było:
UPDATE
myTable
SET
col = CONCAT( myTable.col , "string" )
To zadziałało.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-21 16:49:49
Możesz to zrobić:
Update myTable
SET spares = (SELECT CASE WHEN spares IS NULL THEN '' ELSE spares END AS spares WHERE id = 1) + 'some text'
WHERE id = 1
Pole = pole + Wartość nie działa, gdy pole jest null.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-24 18:19:23