首页 > 解决方案 > 这个简单的 SQL 表达式有什么问题?

问题描述

select * from TABLE
where (BIT_COLUMN_1 = 1) <> (BIT_COLUMN_2 = 1)

select * from TABLE
where (BIT_COLUMN_1 = 1) = (BIT_COLUMN_2 = 1)

这两个表达式都会导致错误 '<' 或 '=' 附近的语法不正确。

在上面的例子中,where 子句可以重写为:

select * from TABLE
where BIT_COLUMN_1 = BIT_COLUMN_2

...效果很好。但是,我实际上试图解决的情况是:

select * from TABLE
where (BIT_COLUMN_1 = 1) <> (NULLABLE_COLUMN_2 is null)

...我根本无法上班。

我正在使用 SQL Server Express 2016。

标签: sqlsql-server

解决方案


正如肖恩评论的,感谢肖恩,这永远不会返回结果,但这是您所要求的:

select * from table
where BIT_COLUMN_1  <> NULLABLE_COLUMN_2
and BIT_COLUMN_1  = 1
and NULLABLE_COLUMN_2  is null;

您也可以使用它:

select * from table
where BIT_COLUMN_1  = 1
and NULLABLE_COLUMN_2  is null;

当然取决于您的需要......或者可能只是使用或运算符:

select * from table
where BIT_COLUMN_1  = 1
or NULLABLE_COLUMN_2  is null;

推荐阅读