SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

Cara Memesan berdasarkan Nama Bulan di SQLite

Masalah:

Anda ingin mengurutkan baris menurut nomor bulan, nama bulan yang diberikan (Anda ingin Januari ditampilkan terlebih dahulu, Desember terakhir).

Contoh:

birthday tabel berisi dua kolom:nama dan birthday_month . Bulan ditulis dengan nama, bukan angka.

nama bulan_ulang tahun
Ronan Tisha Januari
Desember April
Angie Julia April
Narelle Dillan April
Purdie Casey Januari
Donna Nell NULL
Blaze Graeme Oktober

Anda ingin mengurutkan baris berdasarkan birthday_month .

Solusi:

SELECT *
FROM birthday
ORDER BY
 (CASE birthday_month
    WHEN 'January' THEN 1
    WHEN 'February' THEN 2
    WHEN 'March' THEN 3
    WHEN 'April' THEN 4
    WHEN 'May' THEN 5
    WHEN 'June' THEN 6
    WHEN 'July' THEN 7
    WHEN 'August' THEN 8
    WHEN 'September' THEN 9
    WHEN 'October' THEN 10
    WHEN 'November' THEN 11
    WHEN 'December' THEN 12
  END);

Hasilnya terlihat seperti ini (baris diurutkan dalam urutan menaik berdasarkan birthday_month ):

nama bulan_ulang tahun
Purdie Casey Januari
Angie Julia April
Narelle Dillan April
Blaze Graeme Oktober
Ronan Tisha Januari
Desember NULL
Donna Nell NULL

Diskusi:

Untuk mengurutkan baris berdasarkan bulan, Anda memerlukan bulan dalam angka (bukan nama). Anda dapat mengonversi nama bulan menjadi bulan numerik menggunakan CASE WHEN ayat. Setelah CASE kata kunci, tentukan nama kolom. Kemudian, setelah setiap WHEN , nyatakan nilainya di kolom ini, gunakan THEN kata kunci, dan tentukan nilai baru yang ingin Anda tetapkan, bukan yang lama. Di sini, kolomnya adalah birthday_month , nilai saat ini di kolom ini adalah 'January ', 'February ', …, 'December ', dan nilai barunya adalah bulan numerik 1 , 2, …, 12 . Setelah Anda selesai mengonversi semua nilai, ingatlah untuk menggunakan END kata kunci untuk menutup CASE WHEN ayat. Lihat:

CASE birthday_month
  WHEN 'January' THEN 1
  WHEN 'February' THEN 2
  WHEN 'March' THEN 3
  WHEN 'April' THEN 4
  WHEN 'May' THEN 5
  WHEN 'June' THEN 6
  WHEN 'July' THEN 7
  WHEN 'August' THEN 8
  WHEN 'September' THEN 9
  WHEN 'October' THEN 10
  WHEN 'November' THEN 11
  WHEN 'December' THEN 12
END

Ini adalah bagaimana Anda mengubah nama bulan menjadi nomor bulan. Anda dapat menggunakannya untuk mengurutkan baris dalam urutan menaik berdasarkan bulan – cukup gunakan di ORDER BY klausa.

Perhatikan bahwa dalam SQLite, NULL s ditampilkan pertama kali saat mengurutkan dalam urutan menaik dan terakhir saat mengurutkan dalam urutan menurun. Juga, baris dengan birthday_month yang sama ditampilkan dalam urutan acak (Anda dapat melihat Angie Julia kedua dan Narelle Dillan ketiga, atau Narelle Dillan kedua dan Angie Julia ketiga). Untuk mengubah urutan turun, gunakan DESC kata kunci setelah kolom di ORDER BY ayat. Berikut tampilan kuerinya:

SELECT *
FROM birthday
ORDER BY
  (CASE birthday_month
    WHEN 'January' THEN 1
    WHEN 'February' THEN 2
    WHEN 'March' THEN 3
    WHEN 'April' THEN 4
    WHEN 'May' THEN 5
    WHEN 'June' THEN 6
    WHEN 'July' THEN 7
    WHEN 'August' THEN 8
    WHEN 'September' THEN 9
    WHEN 'October' THEN 10
    WHEN 'November' THEN 11
    WHEN 'December' THEN 12
  END) DESC;

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana Panjang SQLite() Bekerja

  2. Android:onUpgrade tidak menelepon saat pemutakhiran basis data

  3. Hasilkan Pernyataan INSERT dari Hasil Kueri SQLite

  4. android.database.sqlite.SQLiteException:near s:syntax error (kode 1):,

  5. Bagaimana cara mengakses folder data/data di perangkat Android?