Select 语句中的布尔逻辑
Posted
技术标签:
【中文标题】Select 语句中的布尔逻辑【英文标题】:Boolean Logic in Select Statement [duplicate] 【发布时间】:2014-09-02 05:31:17 【问题描述】:如何在查询运行时在 select 语句中实现布尔逻辑?
SELECT t.[Key]
,t.[Parent_Key]
,t.[Parent_Code]
,t.[Code]
,t.[Desc]
,t.[Point]
,[isChild] -- If Point > 2, then true, if Point == 1 Then false
,t.[By]
,t.[On]
FROM [db].[stats] t WHERE t.[Parent_Key]= @tmpParameter
我想做一些逻辑来根据 t.[Point] 确定 [isChild] 布尔值
【问题讨论】:
CASE 【参考方案1】:SELECT t.[Key]
,t.[Parent_Key]
,t.[Parent_Code]
,t.[Code]
,t.[Desc]
,t.[Point]
,CASE WHEN t.[Point] > 2 THEN 1 ELSE
CASE WHEN t.[Point] = 1 THEN 0 ELSE NULL END
END AS [isChild]
,t.[By]
,t.[On]
FROM [db].[stats] t WHERE t.[Parent_Key]= @tmpParameter
请注意,当 t.[Point]
【讨论】:
【参考方案2】:凯斯是你的朋友...
SELECT Key, Parent_Key, Parent_Code, Code, Desc, point,
case when point > 2 then 1
when point = 1 then 0 end isChild,
[By], [On]
FROM db.stats
WHERE Parent_Key= @tmpParameter
【讨论】:
【参考方案3】:使用case语句:
SELECT t.[Key]
,t.[Parent_Key]
,t.[Parent_Code]
,t.[Code]
,t.[Desc]
,t.[Point]
,CASE t.[Point] WHEN 1 THEN FALSE WHEN 2 THEN TRUE END as [isChild]
,t.[By]
,t.[On]
FROM [db].[stats] t WHERE t.[Parent_Key]= @tmpParameter
【讨论】:
【参考方案4】:你可以使用 CASE 语句
SELECT t.[Key]
,t.[Parent_Key]
,t.[Parent_Code]
,t.[Code]
,t.[Desc]
,t.[Point]
,CASE
WHEN t.[Point] THEN true
else false
END as isChild
,t.[By]
,t.[On]
FROM [db].[stats] t WHERE t.[Parent_Key]= @tmpParameter
【讨论】:
以上是关于Select 语句中的布尔逻辑的主要内容,如果未能解决你的问题,请参考以下文章
如何使用布尔逻辑使这个 if 语句在 python 3 中更简洁?