簡體   English   中英

SQL或在WHEN中(在CASE中)

[英]SQL OR within WHEN (in CASE)

奇怪的是我在網上找不到這個,我需要在case語句中的when子句中使用OR,例如:

SELECT type,color,brand,CASE type WHEN "foo" OR "BAR" OR "somethingelse" THEN SELECT ... FROM .... WHERE .... > ....;

我只是找不到讓它工作的方法,我已經嘗試將其封裝在parenthesys中:

SELECT type,color,brand,CASE type WHEN ("foo" OR "BAR" OR "somethingelse") THEN SELECT ... FROM .... WHERE .... > ....;

或者在方括號中:

SELECT type,color,brand,CASE type WHEN ["foo" OR "BAR" OR "somethingelse"] THEN SELECT ... FROM .... WHERE .... > ....;

問題是我有更多的選項要檢查,並為每個選項制作一個WHEN,這將使我的查詢超長。 沒什么,有什么建議嗎?

CASE如果沒有括號,則無法啟動單獨的SELECT ...並且可以使用以下內容進行OR

CASE WHEN type IN ("foo","BAR","somethingelse") THEN ... ELSE END

如果要從select調用(子查詢)中獲取目標值,請在THEN部分中執行此操作

... THEN ( SELECT col1 FROM tble WHERE ... ) ELSE END

case有兩種形式只有一種可以使用Or

  1. case x when val1 then result1 when val2 then result2 else defaultResult end
  2. case when x = val1 then result1 When y = val2 then result2 Else DefaultResult end ,或更一般地說:
    case when [boolExp1] then reslt1 when [boolExp2] then reslt2 else defltReslt end

第二種形式可以使用Or或任何其他布爾運算符(我記得Exists除外)

 case when x = val1 or y = val2 or z in (val3, val4, val5) then result1 
      else defaultResult end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM