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

Acak string dengan mysql/sql

Ini dia:

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');

Lihat sqlfiddle.com untuk keluarannya.

Berhasil diuji dengan mariadb 10.1 (setara dengan mysql 5.6)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL/Menulis file kesalahan (Errcode 28)

  2. Node.js dan mysql Callback :kueri dalam panggilan balik kueri

  3. Perbarui beberapa baris dengan nilai berbeda dalam satu kueri - MySQL

  4. Cara Mendapatkan row_number di MySQL

  5. Bagaimana cara menggunakan variabel pengguna dalam klausa LIKE MySQL?