Задать вопрос
@YakovSpb

Как перемешать символы в сроке?

Как перемещать буквы в конечной строке пароля?

SELECT string_agg(concat(
  substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil(random() * 26)::integer, 1),
  substring('abcdefghijklmnopqrstuvwxyz', ceil(random() * 26)::integer, 1),
  substring('0123456789', ceil(random() * 10)::integer, 1),
  substring('!#$%&()*+,-./:;<=>?@[]^', ceil(random() * 23)::integer, 1)
), '') 
FROM generate_series(1,8);
  • Вопрос задан
  • 316 просмотров
Подписаться 1 Простой Комментировать
Ответ пользователя Slava Rozhnev К ответам на вопрос (3)
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
Ваша настойчивость впечатляет:
select string_agg(substring, '') from (
  SELECT 
	  substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil(random() * 26)::integer, 1)
  FROM generate_series(1,12) -- 12 capital letters
  union
  SELECT 
	  substring('abcdefghijklmnopqrstuvwxyz', ceil(random() * 26)::integer, 1)
  FROM generate_series(1,12) -- 12 low case letters 
  union
  SELECT 
	  substring('0123456789', ceil(random() * 10)::integer, 1)
  FROM generate_series(1,6) -- 6 digits
  union
  SELECT 
	  substring('!#$%&()*+,-./:;<=>?@[]^', ceil(random() * 23)::integer, 1)
  FROM generate_series(1,2) -- 2 other chars
) seria;


PostgreSQL fiddle
Ответ написан
Комментировать