在TSQL中,如何计算表达式并将其分配给BIT字段?

Giu*_*olo 33 sql t-sql sql-server-2008

我正在努力做一些非常简单的事情.我正在尝试将布尔表达式的结果赋给BIT变量.

基本上我想做的事情如下:

DECLARE @is_search_term_empty BIT

SET @is_search_term_empty = (@search_term = '')
Run Code Online (Sandbox Code Playgroud)

这里@search_termNVARCHAR(128)宣布在代码中的其他地方.

我无法弄清楚评估某些东西并将其分配给BIT变量的语法,即:

SET @is_search_term_empty = (1 > 2) 
Run Code Online (Sandbox Code Playgroud)

谢谢.

Mit*_*eat 28

您可以使用以下CASE声明执行此操作:

DECLARE @bitvar BIT 
DECLARE @search_term varchar(128)

set @search_term = 'abc'

SET @bitvar = CASE 
                 WHEN (@search_term = 'abc') THEN 1
                 ELSE 0
              END

select @bitvar
Run Code Online (Sandbox Code Playgroud)

  • 我想了一秒钟使用CASE声明,但我很快就放弃了相信这是一个讨厌的黑客!:P(是我或SQL语法有时是如此奇怪)无论如何,谢谢你的帮助!:-) (5认同)
  • 对于这个旧的,已接受的答案的下来选民,请发表评论.谢谢. (4认同)

Mr *_*Goo 8

从SQL 2012开始,您现在可以使用IIf()函数.你的例子现在看起来像;

DECLARE @is_search_term_empty BIT = IIf(@search_term = '', 1, 0);
Run Code Online (Sandbox Code Playgroud)

这本质上仍然是一个CASE声明,但更容易消化.