スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PL/pgSQLでランダム文字列を生成

PL/pgSQLでランダムな文字列を生成する関数を作成します。
Webシステムでセッションコードの生成や、パスワード変更のためのテンポラリなURLの生成などに利用できます。
第一引数は生成する文字列の長さで、第二引数は生成する文字の集合です。

CREATE OR REPLACE FUNCTION string_random(
p_length int DEFAULT 10
,p_source text DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
) RETURNS text AS $$
DECLARE
w_result text := '';
w_index int := 0;
BEGIN
-- 入力チェック
IF p_length IS NULL or p_length < 1 or p_source IS NULL or p_source = '' THEN
RETURN '';
END IF;

-- 文字列生成
FOR i IN 1..p_length LOOP
w_index := floor(random() * length(p_source))::integer + 1;
w_result := w_result || substring(p_source, w_index, 1);
END LOOP;
RETURN w_result;
END;
$$ LANGUAGE plpgsql;

こんな感じで使います。
select string_random(); → 7iz5s4DFgC
select string_random(20); → 2QI5DYQOOHaooKfFuvyP
select string_random(8, '01'); → 10110011

追記
2009/09/10 9:34
「:=」にしなければ、いけないとろこが「=」になっていたので、修正しました。
スポンサーサイト

COMMENTS

COMMENT FORM

TRACKBACK


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。