So erstellen Sie eine Spalte in der Datenbank mit einer zufälligen Standardwertzeichenfolge


10

Kann ich eine Spalte in der DB-Tabelle (PostgreSQL) erstellen, die eine zufällige Standardwertzeichenfolge enthält, und wie?

Wenn dies nicht möglich ist, lassen Sie es mich bitte wissen.


Bitte fragen Sie erneut nach MySQL, wenn Sie auch eine Antwort für dieses RDBMS benötigen
Jack sagt, versuchen Sie es mit topanswers.xyz

Antworten:


11

PostgreSQL-Beispiel:

CREATE OR REPLACE FUNCTION f_random_text(
    length integer
)
RETURNS text AS
$body$
WITH chars AS (
    SELECT unnest(string_to_array('A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9', ' ')) AS _char
),
charlist AS
(
    SELECT _char FROM chars ORDER BY random() LIMIT $1
)
SELECT string_agg(_char, '')
FROM charlist
;
$body$
LANGUAGE sql;


DROP TABLE IF EXISTS tmp_test;


CREATE TEMPORARY TABLE tmp_test (
    id serial,
    data text default f_random_text(12)
);


INSERT INTO tmp_test
VALUES 
    (DEFAULT, DEFAULT),
    (DEFAULT, DEFAULT)
;


SELECT * FROM tmp_test;

 id |     data
----+--------------
  1 | RYMUJH4E0NIQ
  2 | 7U4029BOKAEJ
(2 rows)

Anscheinend kannst du das machen. (Natürlich können Sie auch andere Zeichen als auch hinzufügen, oder verwenden Sie andere zufälligen Zeichenfolge - Generator als auch - wie dies ., Zum Beispiel)


1
SELECT md5 (random () :: text); - Das war's, danke!
Tasmaniski

17

Die Lösung ist (für PGSQL):

alter TABLE users ADD column register_key text NOT NULL default md5(random()::text);

1
Das ist ein schöner Trick!
Cjauvin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.