【发布时间】:2016-07-26 14:47:02
【问题描述】:
假设我有一个包含 3 列的表格;人们的薪水、他们一年的花费以及他们的信用评分。
接下来,假设我要标记低薪、大部分收入都花在了他们身上,并且信用评分也很差的人。在对其进行一些分析时,我可能不得不说类似
when(
salary < 40000
and
spent > 0.75*salary
and
credit_score < 500
) then do_something
我可能必须在整个查询中多次引用这三个条件。我可以创建一个包含所有这三个的布尔值吗?
例如
Declare @flag boolean
@flag = case
when(
salary < 40000
and
spent > 0.75*salary
and
credit_score < 500
) then true
else false
/* Then later on in the program */
when(
@flag
) then do_something
所以布尔值的目的是将三条件语句缩短为一个变量,然后引用该变量而不是三个语句。每次检查一行数据时,它都会计算@flag 并根据结果进行操作。
【问题讨论】:
-
SQL Server中没有boolean这样的东西。在SQL Server中表示布尔值的最常见方法是使用bit(0/1)。 -
用户定义函数?仅当您希望它成为数据库的永久部分时才适用。没有临时 UDF。
-
sql server 有一个数据类型叫做 bit。它只能是 0 或 1,像 c# 或 delphi 这样的语言可以将其识别为布尔值。在 sql server 中,如果 @flag = 1 then,你必须像这样检查
标签: sql-server tsql boolean declare