SQL SELECT取决于值

时间:2018-04-27 20:38:26

标签: sql oracle if-statement select

我需要建议或想法如何解决我的问题。 我选择基于少数连接。 其中一个选定的值是ex。 CA.PADDING_ZERO_FLAG这是' 0'或者' 1'。

基于此,我想在select语句中获取其他值。

伪代码:

Select if(CA.PADDING_ZERO_FLAG = '1') then LPAD(ZR.START_ZIP_CODE, 5, '0'),
    LPAD(ZR.END_ZIP_CODE, 5, '0') else ZR.START_ZIP_CODE, ZR.END_ZIP_CODE

有可能吗?

提前致谢

2 个答案:

答案 0 :(得分:1)

Case语句适用于此。

SELECT
  CASE
     WHEN CA.PADDING_ZERO_FLAG = '1' 
         THEN 
             LPAD(ZR.START_ZIP_CODE, 5, '0')
         ELSE 
             ZR.START_ZIP_CODE
  END as 'START_ZIP_CODE',
  CASE
     WHEN CA.PADDING_ZERO_FLAG = '1' 
         THEN 
             LPAD(ZR.END_ZIP_CODE, 5,'0')
         ELSE 
             ZR.END_ZIP_CODE
  END as 'END_ZIP_CODE'

答案 1 :(得分:0)

您可以使用解码功能

select 
  decode(CA.PADDING_ZERO_FLAG,
      '1', LPAD(ZR.START_ZIP_CODE, 5, '0'),
      '0', ZR.START_ZIP_CODE) START_ZIP_CODE,
  decode(CA.PADDING_ZERO_FLAG,
      '1', LPAD(ZR.END_ZIP_CODE, 5, '0'),
      '0', ZR.END_ZIP_CODE) END_ZIP_CODE
      ...