Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MYSQL:Perbarui bidang dengan gabungan beberapa bidang

Saat kueri ini

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

tidak mempengaruhi baris, satu-satunya penjelasan adalah, bahwa tabel kosong. Itu akan memperbarui setiap baris dalam tabel. Tetapi jika salah satu kolom adalah NULL, kolom field1 Anda juga akan menjadi NULL.
Untuk menghindarinya, Anda harus menggunakan fungsi COALESCE(). Fungsi ini mengembalikan parameter pertama yang bukan NULL.

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

Sebagai tambahan, saya harus bertanya, mengapa Anda ingin melakukan ini. Nilai yang dipisahkan koma dalam kolom seringkali merupakan ide yang buruk.

Dan akhirnya, permintaan Anda menggunakan CONCAT_WS() salah. _WS pada nama fungsi adalah kependekan dari "with separator", jadi parameter pertama adalah pemisah yang kemudian ditempatkan di antara parameter fungsi lainnya. Jadi Anda harus menulisnya seperti ini:

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

Keuntungan lain dari fungsi CONCAT_WS() adalah, ia mengabaikan nilai NULL. Baca lebih lanjut tentang dua fungsi di manual .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan PHP untuk mengunggah file dan menambahkan jalur ke database MySQL

  2. Bagaimana Anda menyimpan jam bisnis di db/model aplikasi Rails?

  3. merekayasa balik database mysql untuk membuat aplikasi Django

  4. Menghapus angka dari string di mysql

  5. Impor XML dengan konten yang ditentukan sebagai atribut ke dalam tabel MySQL?