PLPGSQL -Funktion, um zufällige lesbare Zeichenfolgen zu generieren
-
22-09-2019 - |
Frage
Ich habe die folgende Funktion geschrieben, aber es gibt nichts zurück, wenn ich sie ausführe. Kann jemand dazu beitragen, das Problem zu identifizieren?
CREATE OR REPLACE FUNCTION GenerateReadableRandomString (
len INT
) RETURNS varchar AS
$$
DECLARE
validchars VARCHAR;
randomstr VARCHAR;
randint INT;
i INT;
BEGIN
validchars := 'ABCEFHJKLMNPRTWXY3478';
i := 0;
LOOP
randint := ceil(random() * char_length(validchars));
randomstr := randomstr || substring(validchars from randint for 1);
i := i + 1;
EXIT WHEN i = len;
END LOOP;
RETURN randomstr;
END;
$$
LANGUAGE plpgsql;
Lösung
Ja, das Problem ist, dass Sie Ihre variable Randomstr nicht initialisiert haben. Und wenn Sie etwas mit Null begleiten, bekommen Sie Null
Andere Tipps
Schnellerer Code kann sein
CREATE OR REPLACE FUNCTION rstr(int) RETURNS text AS $$ SELECT array_to_string(ARRAY(SELECT substring('ABCEFHJKLMNPRTWXY3478' FROM (random()*21)::int + 1 FOR 1) FROM generate_series(1,$1)), '') $$ LANGUAGE sql;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow