Oracle LIKE运算符与DECODE

问题描述 投票:0回答:1

我是新学oracle的,在理解语法上遇到了一些问题。

INSERT INTO TEMP_BILL_PAY_LWDAY_PL
            WITH tmp_acc AS (
              SELECT ac_id,ac_currency,ac_category,ac_co_code
              FROM account
              WHERE ac_co_code LIKE decode(Currency,'','%','ALL','%',Currency) AND ac_category = '9986'
            )

这是oracle plsql语句,谁能告诉我这行是什么意思。

WHERE ac_co_code LIKE decode(Currency,'','%','ALL','%',Currency)

我不明白这里的解码与LIKE是什么意思。我真的很感激一些帮助。

sql database oracle relational-database rdbms
1个回答
2
投票

这是在飞行中产生一个搜索模式。这个逻辑使用了 DECODE() 来决定。

  • 如果该值 Currency 是一个空的VARCHAR(''),那么就用 % 为例 LIKE. 该条件将等同于。

    WHERE ac_co_code LIKE '%'
    
  • Else, if the value Currency'ALL' 然后用 % 为例 LIKE. 该条件将等同于。

    WHERE ac_co_code LIKE '%'
    
  • Else使用 Currency 为例 LIKE. 该条件将等同于。

    WHERE ac_co_code LIKE Currency
    

Oracle在线文档 详见。

© www.soinside.com 2019 - 2024. All rights reserved.