我想生成一个从最小到最大的数字。我在postgres generate_series(int,int)中有一个内置函数,可以很容易地做到这一点。我的问题是正在处理文本字段,因为我想捕获像0001这样的值。如果没有其他可以保持此格式的内置函数,则我想提取前面的零,然后将它们附加到函数generate_series( int,int)。任何对此的解决方案将不胜感激。
答案 0 :(得分:1)
您可以使用to_char()
来格式化generate_series()
返回的数字
select to_char(n, 'FM0000')
from generate_series(1,1000) as x(n);
FM
从输出中删除前导空白。
答案 1 :(得分:-1)
首先创建一个序列以将id作为整数:
create sequence test;
然后创建一个sql函数以将值返回为varchar:
create or replace function ser() returns varchar as
$$
select right('000' || nextval('test')::varchar,4) as id;
$$
language sql;
要在语句中获取递增的值,可以调用函数ser()
,该函数将始终以varchar的形式返回序列的新值:
“ 0001” '0002' '0003' 等等
请记住,当您调用函数时,该值将始终递增,因为它将像主键一样工作。