WHERE子句中的CASE子句



有人能告诉我为什么我不能在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支持布尔型数据类型,CASE表达式可能会导致布尔型:

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;

相关内容

  • 没有找到相关文章

最新更新