Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL - създаване на дефинирана от потребителя функция за персонализирано сортиране

Имате някои проблеми с вашите поднизове и прехвърлянето към int в края го кара да сортира стойности с повече цифри в края, а не по година. Това трябва да работи по-добре;

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 ;

Това може да се опрости малко до;

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. Балансиране на натоварването с ProxySQL за Percona XtraDB Cluster

  2. задайте сесия в обект на сесия на SQLAlchemy

  3. Проверете за дубликати, преди да поставите

  4. Как да изберете РАЗЛИЧНИ редове, без да е избрано полето ПОРЪЧАЙ ПО

  5. Сравнете датите в MySQL