相关疑难解决方法(0)

标准SQL布尔运算符IS与equals(=)运算符

在SQL的Wikipedia页面上,有一些关于SQL中布尔逻辑的真值表.[1]维基百科页面似乎源于SQL:2003标准.

equals运算符(=)的真值表与SQL:2003草案中的IS运算符不同.

此外,维基百科文章指出"IS NULL"(<null predicate>)是一种特殊情况.

在SQL:2003中,似乎有一个"IS"操作符,它是一个常规运算符,如AND,NOT和OR.但是,<null谓词>仍然存在.

当IS是常规布尔运算符时,为什么<null谓词>存在?它是否确保您可以使用具有非布尔值的"IS NULL"构造而不使用类型coersion?不鼓励使用"= NULL"吗?

SQL:2011标准的工作方式不同吗?

[1]:关于SQL的维基百科

[2]:SQL:2011草案 PDF第335页

[3]:SQL:2003草案 PDF第397页

sql null boolean-logic ansi-sql

19
推荐指数
2
解决办法
9450
查看次数

如何在SQLite中使= NULL工作?

鉴于下表:

Table: Comedians
=================

Id    First    Middle    Last
---  -------  --------  -------
 1     Bob      NULL     Sagat
 2    Jerry     Kal      Seinfeld      

我想做以下准备好的查询:

SELECT * FROM Comedians WHERE Middle=?

为所有案件工作.它目前不适用于我通过NULL传递的情况sqlite3_bind_null.我意识到实际搜索NULL值的查询使用IS NULL,但这意味着我不能在所有情况下使用准备好的查询.我实际上必须根据输入更改查询,这在很大程度上违背了准备好的查询的目的.我该怎么做呢?谢谢!

c++ sql sqlite

7
推荐指数
1
解决办法
715
查看次数

标签 统计

sql ×2

ansi-sql ×1

boolean-logic ×1

c++ ×1

null ×1

sqlite ×1