Sql 创建/排列50位数字并将其强制转换为varchar

Sql 创建/排列50位数字并将其强制转换为varchar,sql,postgresql,Sql,Postgresql,我不能创建这么长的数值(数值超出范围),所以我必须强制转换它,但它不起作用 ID DesiredID 1 100000..1(50 digit long) 2 100000..2(50 digit long) 3 100000..3(50 digit long) ... 999 435345...(50 digit long) 这些数字可以有任何值,但它们需要50位长,ID从1开始,上升到三位数字(999) 我试过类似的东西 select (100000...

我不能创建这么长的数值(数值超出范围),所以我必须强制转换它,但它不起作用

ID   DesiredID 
1    100000..1(50 digit long) 
2    100000..2(50 digit long) 
3    100000..3(50 digit long) 
... 
999  435345...(50 digit long)
这些数字可以有任何值,但它们需要50位长,ID从1开始,上升到三位数字(999)

我试过类似的东西

select (100000.....000 + dense_rank() over (order by ID))::varchar(50) 
但是我得到的数值超出了误差范围。与:

select (1000 + dense_rank() over (order by ID))::varchar(4) 

sql是有效的。

Postgres支持无限长的数字,因此这两种方法都有效:

select '10000000000000000000000000000000000000000000000000000000000001'::numeric

select 10000000000000000000000000000000000000000000000000000000000001

如果您开始使用的数字确实有50位数字,那么您的代码将正常工作

我打赌两个披萨和一瓶啤酒,你有一个1加50个零,总共51位

下面是一个it工作的示例:


嗯,可以,但遗憾的是,这对我没有帮助。我无论如何都要投。@TEC23。你可以在这些表达式之后使用
::text
。我不是管理员,所以我不知道这里是否设置了限制,但我无法运行代码。在这个环境中,它在30位数处中断。@TEC23-它肯定是postgresql?什么版本<代码>选择版本()?这不是像亚马逊红移这样的分支吗?