只是想确认一下,如果这是在SQL中使用IF ELSE OR语句的正确方法吗?
CASE DB_NAME() WHEN 'dbName' THEN 'value1' ELSE 'value2-a' OR 'value2-b'
基本上我想做一个声明,如果dbName是正确的,那么它将采用value1,否则它将采用value2-a或value2-b。
我想在我的存储过程中实现这个语句。
答案 0 :(得分:1)
SQL Server没有if else或选项。 select语句中的每个项都需要计算为一个值。您无法为一个字段获取两个唯一值。
如果您想在CASE WHEN语句中有多个选项,可以重复使用WHEN关键字。
例如
SELECT CASE WHEN DB_NAME() = 'PROD' THEN value1
WHEN DB_NAME() = 'DEV' THEN value2-a
ELSE value2-b END DbValue
答案 1 :(得分:1)
CASE
有两种类型,简单和搜索。你可以一起使用。如果CASE
没有选项ELSE
,则返回NULL
。尝试这样的事情:
SELECT...
FROM...
WHERE
CASE DB_NAME() -- simple case
WHEN 'dbName' THEN
CASE value WHEN 'value1' THEN 1 END -- simple case
ELSE
CASE WHEN value IN ('value2-a', 'value2-b') THEN 2 END -- searched case
END IS NOT NULL
或者这个:
SELECT
CASE DB_NAME() -- simple case
WHEN 'dbName' THEN
CASE value WHEN 'value1' THEN value END -- simple case
ELSE
CASE WHEN value IN ('value2-a', 'value2-b') THEN value END -- searched case
END AS value
FROM...
MSDN上CASE
上的内容更多。
答案 2 :(得分:0)
我怀疑你想要这样的逻辑:
WHERE (db_name() = 'prod' and value = 'value1') OR
(db_name() <> 'prod' and value in ('value2-a', 'value2-b'))