sql >> データベース >  >> RDS >> Mysql

mysql/sqlを使用して文字列をシャッフルします

    どうぞ:

    DELIMITER //
    
    DROP FUNCTION IF EXISTS shuffle //
    
    CREATE FUNCTION shuffle(
        v_chars TEXT
    )
    RETURNS TEXT
    NOT DETERMINISTIC -- multiple RAND()'s
    NO SQL
    SQL SECURITY INVOKER
    COMMENT ''
    BEGIN
        DECLARE v_retval TEXT DEFAULT '';
        DECLARE u_pos    INT UNSIGNED;
        DECLARE u        INT UNSIGNED;
    
        SET u = LENGTH(v_chars);
        WHILE u > 0
        DO
          SET u_pos = 1 + FLOOR(RAND() * u);
          SET v_retval = CONCAT(v_retval, MID(v_chars, u_pos, 1));
          SET v_chars = CONCAT(LEFT(v_chars, u_pos - 1), MID(v_chars, u_pos + 1, u));
          SET u = u - 1;
        END WHILE;
    
        RETURN v_retval;
    END;
    //
    
    DELIMITER ;
    
    SELECT shuffle('abcdef');
    

    sqlfiddle.com を参照してください。 出力用。

    mariadb 10.1(mysql 5.6相当)で正常にテストされました



    1. MySQLでN行ごとに取得する方法

    2. CTEと誕生日のパラドックス

    3. PHPで準備されたmysqliクエリのパラメータを無視するにはどうすればよいですか?

    4. SQLUNIONチートシートと10の簡単で便利なヒント