Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Potasuj ciąg za pomocą mysql/sql

Proszę bardzo:

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

Zobacz sqlfiddle.com dla wyjścia.

Przetestowano pomyślnie z mariadb 10.1 (odpowiednik 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. Funkcja MySQL ASIN() – zwraca łuk sinus liczby

  2. Połącz się z opcją lokalnego pliku w MySql Workbench

  3. zapobieganie wstawianiu zduplikowanych wierszy w php/mysql

  4. Jak działa funkcja EXPORT_SET() w MySQL

  5. Jak używać kolumny tymczasowej w klauzuli where