在我的数据库中,有一个last_id
类型的字段integer
。该表包含多行。我们假设last_id
的最大值是104050.现在我想知道这个整数的长度。
由于这是不可能的,我试图将其转换为字符串。
SELECT to_char(MAX(last_id),'99') FROM xxxx
我希望使用type = text产生10,但它会返回## type = text。
之后我会使用SELECT char_length(to_char(MAX(last_id),'99')) FROM xxx
,它应该返回2 ...
这里出了什么问题?
答案 0 :(得分:9)
Cast integer
值text
:
SELECT length(max(last_id)::text) FROM xxx
答案 1 :(得分:2)
由于您正在处理整数,因此您实际上可以直接找到数字的长度(或数字中的位数)。在数学上,整数中的位数比该数字的基数10的底数多一个。
您可以使用以下内容直接查找长度:
SELECT FLOOR(LOG(MAX(last_id))) + 1 FROM xxxx
答案 2 :(得分:-1)
不要使用postgresql,但在阅读文档之后...像这样的Somthign。
从表
中选择character_length(cast(last_id as varchar(20)))