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

Pesan sebelum CONCAT_WS

Berikut ini akan berfungsi, jika nilainya memang NULL dan tidak kosong:

select id,
       concat_ws('||', Phone1, Phone2, Phone3)
from t

Referensinya adalah di sini :

Untuk menangani pemesanan, saya akan menggunakan:

select id,
       group_concat(phone Separator '||' order by phone) as ConcatPhones
from (select t.id,
             (case when nums.n = 1 then phone1
                   when nums.n = 2 then phone2
                   when nums.n = 3 then phone3
              end) as phone
       from t cross join
            (select 1 as n union all select 2 union all select 3) nums
     ) p
where phone is not null
group by id

Ini akan menyaring setiap id yang tidak memiliki nomor telepon.

Anda juga dapat melakukan ini dengan case raksasa pernyataan, meskipun itu tampak seperti mimpi buruk:

select t.id,
       (case when phone1 < phone2 and phone2 < phone3 then concat_ws('||', phone1, phone2, phone3)
             when phone1 < phone3 and phone3 < phone2 then concat_ws('||', phone1, phone3, phone2)
              . . .  through the remaining 4 permuatiations when all three are present
             when phone1 is null and phone2 < phone3 then concat_ws('||', phone2, phone3)
             . . . through the remaining 5 permutuations when one is NULL
             when phone1 is null and phone2 is null then phone3
              . . . through the remaining 2 permutations when two are NULL
        end) as ConcatPhones
from t

Ini lebih efisien. Hal ini layak untuk 3 nomor telepon. Saya tidak ingin berurusan dengan, katakanlah, lima dari mereka.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ganti Karakter NonASCII di MYSQL

  2. MySQL :jumlah setiap hari

  3. Skema pengembangan web untuk server pementasan dan produksi menggunakan Git Push

  4. Tidak dapat terhubung ke AWS RDS melalui PDO

  5. Kesalahan startup server MySQL 'Server berhenti tanpa memperbarui file PID'