如何创建一个适合PostgreSQL中的会话ID的随机字符串?

前端之家收集整理的这篇文章主要介绍了如何创建一个适合PostgreSQL中的会话ID的随机字符串?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想要一个随机字符串用于使用Postgresql进行会话验证。我知道我可以得到一个随机数与SELECT random(),所以我尝试SELECT md5(random()),但是不工作。我如何做到这一点?
我建议这个简单的解决方案:

这是一个非常简单的函数,返回给定长度的随机字符串:

  1. Create or replace function random_string(length integer) returns text as
  2. $$
  3. declare
  4. chars text[] := '{0,1,2,3,4,5,6,7,8,9,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,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}';
  5. result text := '';
  6. i integer := 0;
  7. begin
  8. if length < 0 then
  9. raise exception 'Given length cannot be less than 0';
  10. end if;
  11. for i in 1..length loop
  12. result := result || chars[1+random()*(array_length(chars,1)-1)];
  13. end loop;
  14. return result;
  15. end;
  16. $$ language plpgsql;

用法

  1. select random_string(15);

示例输出

  1. select random_string(15) from generate_series(1,15);
  2.  
  3. random_string
  4. -----------------
  5. 5emZKMYUB9C2vT6
  6. 3i4JfnKraWduR0J
  7. R5xEfIZEllNynJR
  8. tMAxfql0iMWMIxM
  9. aPSYd7pDLcyibl2
  10. 3fPDd54P5llb84Z
  11. VeywDb53oQfn9GZ
  12. BJGaXtfaIkN4NV8
  13. w1mvxzX33NTiBby
  14. knI1Opt4QDonHCJ
  15. P9KC5IBcLE0owBQ
  16. vvEEwc4qfV4VJLg
  17. ckpwwuG8YbMYQJi
  18. rFf6TchXTO3XsLs
  19. axdQvaLBitm6SDP
  20. (15 rows)

猜你在找的Postgre SQL相关文章