步骤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

10-04 20:51