10

私は7つの整数値(それぞれ3、1、3、4、4、5、4桁)を持っており、それらを1つの整数(つまり24桁の番号)に連結する必要があります。こんな風にやってみました

create or replace function gen_id(int,int,int,int,int,int,int) returns bigint as $$
declare
    id bigint;
begin
    id = $1 * 1000000000000000000000 + $2 * 100000000000000000000 + $3 * 100000000000000000 + $4 * 10000000000000 + $5 * 1000000000 + $6 * 10000 + $7;
    return id;
end;
$$ language plpgsql;

select * from gen_id(100,1,101,1000,1001,10001,1000);  

しかし、それを実行すると、エラーが発生します:bigintが範囲外です。それを行うための他のより良い方法はありますか?
ありがとう

4

2 に答える 2

12

どうですか:

SELECT CAST(CAST(num1 AS text)||CAST(num2 AS text)||... AS numeric(24,0))

あるテーブルにIDがある場合は、次のことができます。

SELECT CAST(string_agg(CAST(num AS text), '') AS numeric(24,0)) FROM srctab;
于 2012-06-25T20:45:31.793 に答える
0

文字列を整数に連結できるので

SELECT REPLACE(STR(ISNULL(MAX(usuarioid) + 1, 1), 6), ' ', '0') FROM usuarios

usuarioidは文字列+1です

于 2014-07-28T16:03:05.797 に答える