首页 > 解决方案 > 无法使用 AND 条件获得结果

问题描述

当我执行以下查询时,我没有得到任何结果:

SELECT * FROM contacts_cstm WHERE id = '123' AND ftrere!='test'

当我运行以下查询时,它会返回结果:

SELECT * FROM  contacts_cstm  WHERE ( id = '123')

以下是表定义以及示例插入语句:

CREATE TABLE IF NOT EXISTS `contacts_cstm` (
  `id` char(36) NOT NULL,
  `ftrere` varchar(100) DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `contacts_cstm` (`id`, `ftrere`) VALUES
('123', NULL);

我不确定我错过了什么。任何帮助将不胜感激!

标签: mysqlsql

解决方案


NULL失败<>就像失败一样=。使用 null 安全比较:

SELECT *
FROM contacts_cstm
WHERE id = 123 AND NOT (ftrere <=> 'test')

请注意,这<=>是 MySQL 定制的 NULL 安全比较运算符。这相当于标准的 SQL 运算符IS NOT DISTINCT FROM

或者明确NULL比较:

SELECT *
FROM contacts_cstm
WHERE id = 123 AND (ftrere <> 'test' OR ftrere IS NULL);

注意: id看起来像一个数字,所以我删除了单引号进行比较。


推荐阅读