如果列中包含某个值,则选择预定义字符串



我有一个表,看起来像这样

ID  Column a Column b
-- --------- --------
1   1           a
2   0           b
3   1           c

Column a为位类型。给定一个ID,我想实现的是这样的:

@Id = 1 -> a, 'Hello' 
@Id = 2 -> b, ''      
@Id = 3 -> c, 'Hello' 

我试过用IF和ELSE语句做这件事,但没有结果。我想我不明白IF和ELSE如何在SQL中工作。我试过的:

SELECT Column b
,IF(Column a = 1) SELECT 'Hello' ELSE SELECT ''
FROM Table where ID = @Id

总之,我正在寻找一种方法来"打印"。根据某个查询的值获得某个值

SELECT
b,
CASE a
WHEN 1 THEN 'HELLO'
ELSE ''
END

CASE有两种形式:

CASE 
WHEN boolean_test THEN result
WHEN other_boolean_test THEN other_result --optional
...  --more WHENs, optional
ELSE --optional
END

CASE x
WHEN value_to_compare_to_x THEN result
WHEN other_value_to_compare_to_x  THEN other_result --optional
... --more WHENs, optional
ELSE --optional
END

都可以,但对于解码单列,我发现CASE column WHEN value THEN result形式更整洁。注意,你不能在这种形式下使用复杂的表达式,例如CASE x WHEN IN(1,2,3) THEN ..是不允许的;你必须使用CASE WHEN x IN(1,2,3) THEN..

您要查找的是CASE表达式。

Select [Column B], CASE 
WHEN [Column a] = 1 
THEN 'Hello' 
ELSE '' END
FROM Table where ID = @Id

也可用于多个条件

Select [Column B], CASE 
WHEN [Column a] = 1 
THEN 'Hello' 
WHEN [Column a] IS NULL  
THEN 'Goodbye' 
ELSE '' END
FROM Table where ID = @Id

相关内容

  • 没有找到相关文章

最新更新