Mysql
 sql >> база данни >  >> RDS >> Mysql

MYSQL:Актуализиране на полето с конкат от множество полета

Когато тази заявка

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

не засяга ред, единственото обяснение би било, че таблицата е празна. Ще актуализира всеки ред в таблицата. Но ако една от колоните е NULL, вашата колона field1 също ще бъде NULL.
За да избегнете това, трябва да използвате функцията COALESCE(). Тази функция връща първия от своите параметри, който не е NULL.

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

От друга страна трябва да попитам защо искате да направите това. Стойностите, разделени със запетая в колони, са лоша идея през повечето време.

И накрая, вашата заявка с CONCAT_WS() е грешна. _WS в името на функцията е съкращение от "с разделител", така че първият параметър е разделителят, който след това се поставя между другите параметри на функцията. Така че трябва да го напишете така:

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

Друго предимство на функцията CONCAT_WS() е, че тя игнорира NULL стойности. Прочетете повече за двете функции в ръководството .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на функциите password_hash и password_verify на PHP 5.5

  2. MySQL нарушава ли стандарта, като позволява избор на колони, които не са част от групата по клауза?

  3. Как да инсталирам pdo драйвер в php docker изображение?

  4. Кога да затворите MySQL връзката с помощта на node-mysql?

  5. MySQL:проверете коя версия:32-битова или 64-битова?