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. テーブル名が別のテーブルのフィールドであるMySQL結合テーブル

    2. SQLServerモニタリングの総所有コストを計算する

    3. パート1– SuiteCRMをインストールし、そのデータベースをリバースエンジニアリングする方法

    4. 休止状態のキーと呼ばれる列名にバッククォートを入れるにはどうすればよいですか?