sql >> Database teknologi >  >> RDS >> Mysql

MYSQL:Opdater felt med sammensætning af flere felter

Når denne forespørgsel

UPDATE tabex SET field1=CONCAT(tabex.a1,', ',tabex.a2,', ',tabex.a3,', ',tabex.a4,', ',tabex.a5,', ',tabex.a6,', 'tabex.a7,', ',tabex.a8,', ',tabex.a9 );

påvirker ikke en række, den eneste forklaring ville være, at tabellen er tom. Det ville opdatere hver række i tabellen. Men hvis en af ​​kolonnerne er NULL, vil din felt1-kolonne også være NULL.
For at undgå det, skal du bruge COALESCE()-funktionen. Denne funktion returnerer den første af dens parametre, som ikke er NULL.

UPDATE tabex SET field1=CONCAT(COALESCE(tabex.a1, ''),', ',...);

På en sidenote er jeg nødt til at spørge, hvorfor du ønsker at gøre dette. Kommaseparerede værdier i kolonner er en dårlig idé de fleste gange.

Og endelig er din forespørgsel ved hjælp af CONCAT_WS() forkert. _WS i funktionsnavnet er en forkortelse for "med separator", så den første parameter er separatoren, som så placeres mellem funktionens andre parametre. Så du skal skrive det sådan her:

UPDATE tabex SET field1=CONCAT_WS(',', tabex.a1, tabex.a2, tabex.a3,...);

En anden fordel ved CONCAT_WS()-funktionen er, at den ignorerer NULL-værdier. Læs mere om de to funktioner i manualen .




  1. Konstruer dato fra år og ugenummer i MSSQL

  2. Hvordan kan jeg kombinere to procedurer i én for at udfylde én tabel i stedet for at hver af de to procedurer udfylder sin egen tabel?

  3. JDBC VS Hibernate

  4. applikationen forbinder til databasen