步骤1:我有一个名为XYZ的表,它包含以下整数列:
ID A B C
1 201507 20150810 20150311
2 20150812 201509 201510
我需要编写一个SQL查询,如果a、B和C的任何值小于8位,那么我需要在步骤2的值的右边加上0(不允许我更新表),将其视为8位。例如:
ID A B C
1 20150700 20150810 20150311
2 20150812 20150900 20151000
如何通过SQL查询在整数值右边加零?
第二步:我需要找到每个记录是否
A<B, B<C
。请让我知道如何编写查询。我在用PostgreSQL。谢谢您。 最佳答案
您可以使用rpad()
添加尾随零,然后将结果转换回整数:
select id,
rpad(a::text, 8, '0')::int,
rpad(b::text, 8, '0')::int,
rpad(c::text, 8, '0')::int
from the_table;
要避免重复表达式,请使用派生表:
select *
from (
select id,
rpad(a::text, 8, '0')::int as a,
rpad(b::text, 8, '0')::int as b,
rpad(c::text, 8, '0')::int as c
from the_table
) t
where a < b or b < c --<< change that to the condition you want