Thứ Ba, 21 tháng 11, 2017

PosgreSQL : Một số hàm

1. Phát sinh chuỗi duy nhất gồm kí tự (A..Z) và số (0..9)

DROP FUNCTION IF EXISTS unique_string(int);
CREATE OR REPLACE FUNCTION unique_string(quantity int)
RETURNS TEXT AS
$BODY$
SELECT result FROM (SELECT array_to_string(
    ARRAY (
        SELECT substring(
            '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
            FROM (ceil(random()*36))::int FOR 1
        )
        FROM generate_series(1, $1)
    ),
    ''
) as result) r  WHERE NOT EXISTS (SELECT 1 FROM mobile WHERE mobile.name = r.result)
$BODY$
LANGUAGE sql VOLATILE;

SELECT unique_string(16); 

2. Phát sinh chuỗi duy nhất gồm số (0..9)

CREATE OR REPLACE FUNCTION unique_number(int)
RETURNS TEXT AS
$BODY$
SELECT result FROM (
    SELECT array_to_string(
    ARRAY(
        SELECT chr((48 + round(random() * 9)) :: integer) 
        FROM generate_series(1,$1)
    ), ''
) as result) r  WHERE NOT EXISTS (SELECT 1 FROM mobile WHERE mobile.serial_number = r.result);
$BODY$
LANGUAGE sql VOLATILE;

SELECT unique_number(16);
 
 
Doi type cua mot column
ALTER TABLE mobile ALTER COLUMN numero SET DATA TYPE character varying(16) using numero::varchar(16); 





Không có nhận xét nào:

Đăng nhận xét