布尔变量过滤varchar



我有一个查询,我想根据它们的函数进行筛选。

例如,我的数据库是:

Name   | Teamleader | Coordinator | Manager | Function
-------------------------------------------------------
Tony   |   Arthur   |   George    |  Mary   |  Sales
Trisha |   Hannah   |   Hannah    | Andrew  | Associate

我想通过它们的函数进行过滤,但我希望它只是一个简单的布尔值,如果我的布尔值变量@assoc = 1,那么它只会显示关联,如果@assoc = 0,那么它不会显示关联。

我正在尝试这个查询,但在等于Incorrect syntax near '='.和FROMIncorrect syntax near 'from'. Expecting CONVERSATION.中出现错误

declare @assoc BIT = 1
set @assoc = (select case @assoc = 1 THEN u_function = 'associate' ELSE u_function != 'associate' END from cm3)

如果我的布尔变量@assoc=1,它将只显示关联,如果@assoc=0,它将不显示关联。

您似乎想要一个带有where子句的查询,该子句基于@assoc变量:

select *
from cm3
where (@assoc = 1 and u_function = 'Associate')
or (@assoc = 0 and u_function <> 'Associate');
  1. 函数是一个保留关键字
  2. 要将值分配给@assoc,我建议这样做:
DECLARE @assoc BIT = 1

SELECT @assoc = CASE 
WHEN pfunction = 'Associate'
THEN 1
ELSE 0
END
FROM cm3

SELECT @assoc

用于测试结果的脚本是:

CREATE TABLE cm3 (
name VARCHAR(20)
,teamleader VARCHAR(20)
,coordinator VARCHAR(20)
,manager VARCHAR(20)
,pfunction VARCHAR(20)
)
INSERT INTO cm3
VALUES (
'Tony'
,'Arthur'
,'George'
,'Mary'
,'Sales'
)
,(
'Trisha '
,'Hannah   '
,'Hannah   '
,'Andrew  '
,'Associate'
)
DECLARE @assoc BIT = 1
SELECT @assoc = CASE 
WHEN pfunction = 'Associate'
THEN 1
ELSE 0
END
FROM cm3
SELECT @assoc
DROP TABLE cm3

结果是1

相关内容

  • 没有找到相关文章

最新更新