sql NOT LIKE NULL

标签 sql

在我的 where 子句中, 我有以下内容:

   where SharePt  NOT LIKE 'SharePoint Document%' 

即使 SharePt 为空,结果也不会返回任何内容。

但是当我执行以下操作时它会起作用 或者 SharePtVer 为 NULL

    where SharePt  NOT LIKE 'SharePoint Document%' OR SharePt  IS NULL

想知道为什么 NOT LIKE 在包含 NULL 方面不起作用>

最佳答案

SQL 使用 three-valued logic ... NULLFALSE 不同,NOT NULLTRUE 不同。

NULL表示没有值,在SQL的三值逻辑中作用未知值:

A AND B | TRUE    | FALSE   | Unknown
--------+---------+---------+--------
TRUE    | TRUE    | FALSE   | Unknown
FALSE   | FALSE   | FALSE   | FALSE
Unknown | Unknown | FALSE   | Unknown


A OR B  | True    | False   | Unknown
--------+---------+---------+--------
True    | True    | True    | True
False   | True    | False   | Unknown
Unknown | True    | Unknown | Unknown

当评估 where SharePt NOT LIKE 'SharePoint Document%' 时,如果 SharePtNULL 或未知...那么结果将是未知的... SharePt 可能是也可能不是 LIKE 'SharePoint Document%'

关于sql NOT LIKE NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9777904/

相关文章:

内连接后MySQL主键类型变为 "index"

sql - super key 与候选 key

sql - 如何将Datetime转换为dd/MM/yyyy格式的日期

sql - 更改 Firebird 数据库和表的默认排序规则

SQL NOT IN 运算符仅在所有值都不在集合中时才返回

SQL 对一个表中的列进行配对

javascript - 在 PHP 中使用 header 函数时页面不会更改,但可以使用 Javascript

mysql_num_rows 不起作用(不会返回 0)

mysql - 不同的SQL编写方式导致不同的时间成本

sql - 将数据库结果扫描到嵌套的结构数组中