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

MySQL - membuat fungsi yang ditentukan pengguna untuk pengurutan khusus

Anda memiliki beberapa masalah dengan substring Anda, dan pemeran ke int di akhir membuatnya mengurutkan nilai dengan lebih banyak digit di akhir, bukan berdasarkan tahun. Ini akan bekerja lebih baik;

DELIMITER //

CREATE FUNCTION custom_sort(id VARCHAR(8))
    RETURNS VARCHAR(10)
    READS SQL DATA
    DETERMINISTIC
    BEGIN
        DECLARE year VARCHAR(2);
        DECLARE balance VARCHAR(6);
        DECLARE stringValue VARCHAR(10);
        SET year = SUBSTRING(id, 1, 2);
        SET balance = SUBSTRING(id, 3, 6);
        IF(year <= 96) THEN
            SET stringValue = CONCAT('20', year, balance);
        ELSE
            SET stringValue = CONCAT('19', year, balance);
        END IF;
        RETURN stringValue;
    END//

DELIMITER ;

Ini dapat disederhanakan sedikit menjadi;

DELIMITER //

CREATE FUNCTION custom_sort(id VARCHAR(8))
    RETURNS varchar(10)
    DETERMINISTIC
    BEGIN
        IF(SUBSTRING(id, 1, 2) <= '96') THEN
            RETURN CONCAT('20', id);
        ELSE
            RETURN CONCAT('19', id);
        END IF;
    END//

DELIMITER ;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Karakter apa yang harus diloloskan untuk mencegah injeksi SQL (Saya)?

  2. Permintaan lambat MySQL - Menunggu kunci cache kueri

  3. Tabel pembersihan MySQL dari entri yang digandakan DAN menautkan kembali FK di tabel tergantung

  4. Bagaimana Fungsi MAKE_SET() Bekerja di MySQL

  5. Apakah tabel dibuat dengan CREATE SEMENTARA TABLE di memori atau di disk?