sql - 这个简单的 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。
解决方案
正如肖恩评论的,感谢肖恩,这永远不会返回结果,但这是您所要求的:
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;
推荐阅读
- c# - 如何使用 Twilio 异步发送 whatsapp 消息
- arrays - 将字符串解析为 bash 中包含空元素的数组
- amazon-quicksight - 日内频率的 QuickSight 电子邮件报告
- sql - MS Access 表单绑定到 ADO 记录集
- java - 凯撒密码移位后恢复原字
- python - 来自 Splinter 的 UnboundLocalError?
- android - 如何在 Android Studio 中使用概述的 Material 图标?
- node.js - Node.js 和 CPU 缓存利用率
- sql - SQL中的UPDATE语句一半工作一半不做任何事情
- javascript - Jquery 可排序/可滚动标签跳跃