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工作的示例:
::text
。我不是管理员,所以我不知道这里是否设置了限制,但我无法运行代码。在这个环境中,它在30位数处中断。@TEC23-它肯定是postgresql?什么版本<代码>选择版本()代码>?这不是像亚马逊红移这样的分支吗?