簡體   English   中英

WHERE 子句中的 CASE 子句

[英]CASE clause inside WHERE clause

誰能告訴我為什么我不能在 SQL Management Studio 中運行此代碼? 提前致謝。

SELECT  * FROM TabKontaktJednani
where
TabKontaktJednani.Typ IN (
CASE 'ERP'--(SELECT ALIAS FROM TabCisZam where LoginId = SUSER_NAME())
WHEN 'ERP'
THEN ('HeO','OST')
WHEN 'TO'
THEN ('SW','OST')
END)

您無法運行該代碼的原因是CASE表達式只能返回一個標量值,而不是值列表。

您的CASE表達式返回一個元組。 這在 SQL 中是不允許的。 但是由於 MySQL 支持 boolean 數據類型,因此CASE表達式可能會導致 boolean:

SELECT *
FROM tabkontaktjednani
WHERE 
  CASE (SELECT alias FROM tabciszam WHERE loginid = suser_name())
    WHEN 'ERP' THEN typ IN ('HeO', 'OST')
    WHEN 'TO' THEN typ IN ('SW', 'OST')
  END;

暫無
暫無

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

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