| | |
| | | select fn_rec_array(1, 'dep') |
| | | select count(*) from lf.sys_meta where depid = ANY(fn_rec_array(1, 'dep')); |
| | | select count(*) from bd.dlg_25w_lrdl where depid = ANY(fn_rec_array(1, 'dep')); |
| | | ----------------------------------------------------------------------------------------------------- 10.路径分析 |
| | | ----------------------------------------------------------------------------------------------------- 10.10进制转62进制 |
| | | -- drop function fn_10to62(numeric); |
| | | create or replace function fn_10to62(num numeric(30, 0)) |
| | | returns varchar as $$ |
| | | declare |
| | | rs varchar; |
| | | begin |
| | | WITH RECURSIVE T(N, S) AS ( |
| | | SELECT num N, '' S |
| | | UNION ALL |
| | | SELECT trunc(N / 62)::NUMERIC(30, 0), substr('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', (N % 62)::INT + 1, 1) || S FROM T WHERE N > 0 |
| | | ) |
| | | SELECT S INTO rs FROM T WHERE N = 0; |
| | | |
| | | return rs; |
| | | end; |
| | | $$ language plpgsql; |
| | | |
| | | select fn_10to62(3843); |
| | | ----------------------------------------------------------------------------------------------------- 11.62进制转10进制 |
| | | -- drop function fn_62to10(numeric); |
| | | create or replace function fn_62to10(ch varchar) |
| | | returns numeric as $$ |
| | | declare |
| | | rs numeric(30, 0); |
| | | begin |
| | | WITH RECURSIVE T(S, N) AS ( |
| | | SELECT ch S, 0::NUMERIC N |
| | | UNION ALL |
| | | SELECT SUBSTR(S, 2), (POWER(62, LENGTH(S)::NUMERIC - 1) * (strpos('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', SUBSTR(S, 1, 1)) - 1) + N) FROM T WHERE LENGTH(S) > 0 |
| | | ) |
| | | SELECT N INTO rs FROM T WHERE LENGTH(S) < 1; |
| | | |
| | | return rs; |
| | | end; |
| | | $$ language plpgsql; |
| | | |
| | | select fn_62to10('zz'); |
| | | ----------------------------------------------------------------------------------------------------- 12.路径分析 |
| | | -- 删除已存在的函数 |
| | | drop function pgr_fromAtoB(varchar, double precision, double precision, double precision, double precision); |
| | | |