Em homenagem à Megasena acumulada que eu não ganhei… uma pequena brincadeira no PostgreSQL, gerando números, datas, caracteres e pedaços de textos
--Um número randomico de 0 a 1
=# SELECT random() n;
n
-------------------
0.210320219863206
-- Um número inteiro de 0 a 100
=# SELECT round(random() * 100) n;
n
----
32
--Uma data entre hoje e um ano no futuro
=# SELECT current_date + round(random()*365)::int * '1 day'::interval AS data;
data
---------------------
2016-05-23 00:00:00
-- Um caractere ASCII (32 a 126)
=# SELECT chr((round(random() * 94) + 32)::int);
chr
-----
v
-- 20 caracteres aleatorios
=# WITH RECURSIVE t(c, v) AS (
SELECT chr((round(random() * 94) + 32)::int), chr((round(random() * 94) + 32)::int)
UNION ALL
SELECT chr((round(random() * 94) + 32)::int), v || c FROM t
)
SELECT length(v), v FROM t OFFSET 19 LIMIT 1;
length | v
--------+----------------------
20 | #>^h<}{ThUVMqFmnnKp@
-- Extraindo um pedaço de um texto
--
=# CREATE TABLE t (t varchar);
CREATE TABLE
=# INSERT INTO t VALUES( $v$Aos meus 12 anos, quando eu dava meus primeiros passos na informática e gravava meus primeiros programas em fita cassete, eu achava que trabalhar com informática seria algo glorioso. Nós eliminariamos o trabalho repetitivo das pessoas automatizando tarefas chatas e tediosas. Afinal, não é para isso que serve o computador: realizar rapidamente tarefas repetitivas!$v$);
INSERT 0 1
--Contanto o total de caracteres
=# SELECT length(t) from t;
length
--------
365
--Extraindo 10 caracteres do texto
=# SELECT substr(t,round(random()*355)::int,10) FROM t;
substr
------------
essoas aut
--Selecionando o tamanho da string
=# SELECT l, round(random()*l)::int q
FROM (SELECT length(t) l, t FROM t) t2;
l | q
-----+----
365 | 45
--Extraindo uma string de tamanho variável
=# SELECT l, q, substr(t,round(random()*(l-q))::int,q)
FROM (SELECT l, round(random()*l)::int q, t
FROM (SELECT length(t) l, t FROM t) t2) t3;
l | q | substr
-----+----+---------------------------------------------------
365 | 49 | fita cassete, eu achava que trabalhar com inform

Deixe um comentário