2

我在过滤掉没有价值的电话号码时遇到问题,即:

(___) ___ - ____

我在 WHERE 子句中尝试了这个来获取所有具有完整电话号码的值:

WHERE WRT_Phone <> null;

这使我能够获得所有具有完整价值的电话号码。但是,当我尝试

WHERE WRT_Phone = null;

结果表中没有填充任何内容。是否有任何功能可用于将区号转换为数字或检查电话号码数据类型是否为空的功能?

另外,我使用 Access 2010 来执行 SQL 语句。

4

2 回答 2

2

检查空值的语法是:

WHERE WRT_Phone IS null;
于 2013-10-23T15:24:22.953 回答
2

要检查空值,您需要使用IS NULL

WHERE WRT_Phone IS NULL

事实上,要检查不为空,您应该在技术上使用IS NOT NULL

WHERE WRT_Phone IS NOT NULL

坦率地说,这里发生了一些奇怪的事情(Access 独有的?),因为你不应该得到任何结果WHERE WRT_Phone <> null


一般来说,当NULL它出现在布尔运算符的任一侧或作为表达式的一部分时,整个事物的计算结果为NULL(出于 WHERE 子句的目的,这被认为是 FALSE):

  • 在非空记录中:
    • WRT_Phone = NULL扩展到'foobar' = NULL 等于 NULL -> 没有返回记录
    • WRT_Phone <> NULL扩展到'foobar' <> NULL 等于 NULL -> 没有返回记录
  • 同样,在空记录中:
    • WRT_Phone = NULL扩展到NULL = NULL 等于 NULL -> 没有返回记录
    • WRT_Phone <> NULL扩展到NULL <> NULL 等于 NULL -> 没有返回记录
于 2013-10-23T15:29:44.673 回答