SQL語句中CASE的用法

字號:

在寫SQL語句時,或者是在PL/SQL中,經(jīng)常需要在一個SQL語句中,根據(jù)不同的條件,有多種處理方法,如簡單例子:出售一種商品時,單價不同,折扣不同,對這種需求的處理,如果分情況處理,將會很麻煩,如果用Case語句,就可以在一條SQL語句中得到想要的結(jié)果。
     首先看一下,Case的語法:
     case when 條件A Then 結(jié)果A When 條件B 結(jié)果B ........ else 結(jié)果N end
     和Decode 不同的是,Decode 只能針對固定的值,而 Case 可以用不是固定值,需是一個條件。
     現(xiàn)在有以下的需求,有一個字符串,最后的兩位可能是 ’/R’ ,’/T’ 另外,有的后兩位沒有前面的’/R’ ,’/T’ ,現(xiàn)在針對不同的需要,要將 ’/R’ ,’/T’ 取掉,沒有 ’/R’ ,’/T’, 就不做處理。
     具體字符串如下: A01JCL-A01JCL/GF117F0001TR/R
    SQL寫法可以如下:
    select (case
     when instr(code, ’/R’) > 0 then
     substr(code, 1, instr(code, ’/R’) - 1)
     when instr(code, ’/T’) > 0 then
     substr(code, 1, instr(code, ’/T’) - 1)
     else
     ’0’
     end)
     from table_A t ;
    使用Case時,要用括號括起來。