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

Sortir Abjad MySQL Tingkat Lanjut dengan Awalan?

Anda bisa melakukan ini:

ORDER BY IF(SUBSTRING(name, 1, 14) = 'University of ', SUBSTRING(name, 15), name)

Mungkin ide yang baik untuk membuat tampilan di atas tabel ini yang memproyeksikan name_value tambahan kolom diatur ke IF() ekspresi di atas. Kemudian Anda dapat memesan berdasarkan kolom ini dan memilihnya tanpa harus mengotori kueri Anda dengan IF() .

Contoh tampilan, dengan asumsi nama universitas disimpan di kolom name :

CREATE VIEW Universities AS
    SELECT
        list_universities.*,
        IF(SUBSTRING(name, 1, 14) = 'University of ',
           SUBSTRING(name, 15),
           name) AS name_value
    FROM list_universities;

Kemudian Anda dapat memilih dari Universities cara yang sama yang Anda lakukan dari list_universities , kecuali itu akan memiliki name_value tambahan kolom yang dapat Anda pilih, atau pesan berdasarkan, atau apa pun.

Perhatikan bahwa pendekatan ini (serta ORDER BY IF(...) ) tidak akan dapat menggunakan indeks apa pun di name untuk meningkatkan kinerja semacam itu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kunci asing yang sama di beberapa tabel

  2. Menekan Peringatan PDO

  3. Bagaimana cara membuat tautan basis data di MySQL untuk terhubung ke Oracle?

  4. pemilihan nama kolom dinamis di MySql

  5. Bagaimana Anda terhubung ke database MySQL menggunakan Oracle SQL Developer?