Mysql
 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP и MySQL:Подредете по най-новата дата и ограничение 10

  2. PHP - Направете ключа на масива на моята заявка в ID

  3. Docker:Комбинирайте няколко изображения

  4. PreparedStatement игнорира параметрите в заявката:java.sql.SQLException:Индекс на параметър извън обхвата (1> брой параметри, което е 0)

  5. Използване на SELECT INTO OUTFILE в MySQL