Jak dołączyć ciąg znaków do wartości kolumny w MySQL?

123

Potrzebuję instrukcji aktualizacji SQL do aktualizacji określonego pola we wszystkich wierszach z ciągiem „test”, który należy dodać na początku istniejącej wartości.

Na przykład, jeśli istniejąca wartość to „try”, powinna stać się „testtry”.

santanu
źródło

Odpowiedzi:

261

Aby to zrobić, możesz użyć funkcji CONCAT :

UPDATE tbl SET col=CONCAT('test',col);

Jeśli chcesz uzyskać sprytniejszy i aktualizować tylko kolumny, które nie mają jeszcze dołączonego testu, spróbuj

UPDATE tbl SET col=CONCAT('test',col)
WHERE col NOT LIKE 'test%';
Paul Dixon
źródło
16
UPDATE tablename SET fieldname = CONCAT("test", fieldname) [WHERE ...]
Ferdinand Beyer
źródło
aktualizacja TICKET set status_details = CONCAT (status _details, 'abc') gdzie ticket_id = 75108; BŁĄD 1583 (42000): Niepoprawne parametry w wywołaniu funkcji natywnej „CONCAT”
nirmesh khandelwal
9

Wygląda na to, że wiele funkcji aktualizujących ciągi znaków w MySQL działa w następujący sposób: jeśli jeden argument to null, to konkatenacja lub inne funkcje nullrównież powracają . Aby więc zaktualizować pole o nullwartość, najpierw ustaw je na wartość inną niż null, na przykład''

Na przykład:

update table set field='' where field is null;
update table set field=concat(field,' append');
bvidinli
źródło
6

To jest proste

UPDATE YourTable SET YourColumn = CONCAT('prependedString', YourColumn);
soulmerge
źródło
Popraw aż do klauzuli WHERE, gdzie można konkatować test tylko z kolumnami już zaczynającymi się od test. Więc: foo -> foo footest -> footest testfoo -> testtestfoo
Jukka Dahlbom
0
  • UPDATE nazwa_tabeli SET Kolumna1 = CONCAT ('nowy ciąg', nazwa_tabeli.Columna1) gdzie 1
  • UPDATE nazwa_tabeli SET Kolumna1 = CONCAT ('nowy ciąg', nazwa_tabeli.Columna2) gdzie 1
  • UPDATE nazwa_tabeli SET Kolumna1 = CONCAT ('ciąg_nowy', nazwa_tabeli.Columna2, 'ciąg_nowy2') gdzie 1

Możemy połączyć tę samą kolumnę lub też inną kolumnę tabeli.

user3419778
źródło