【问题标题】:Mariadb query variable with null value returns nothing具有空值的 Mariadb 查询变量不返回任何内容
【发布时间】:2019-09-05 16:07:11
【问题描述】:

当特定列等于我的变量时,我正在尝试选择一些行。 其中一些行将该列设置为空。

为此,我使用变量进行查询以获取匹配项

SELECT

MT.Column1, 
MT.Column2, 
MT.SpecificColumn

FROM

MyTable MT

WHERE

MT.SpecificColumn = :Variable

因此,当此变量接收 NULL 时,查询不会返回具有 SpecificColumn 值为 NULL 的行。

我得到行的唯一方法是使用这个条件:

WHERE

MT.SpecificColumn IS NULL

但这种情况不适合我,因为我需要它是动态的。

【问题讨论】:

  • 所以让列“不为空”
  • 在某些情况下它将为空,这是预期的。当我尝试将设置为空的变量与列匹配时,我需要的是获取具有该空列的行。
  • 检查空安全运算符:mariadb.com/kb/en/library/null-safe-equal
  • 如果你合并 WHERE 谓词的两边,它对查询执行的危害有多大?

标签: mariadb


【解决方案1】:

来自Codd's rules

空值的系统处理

完全关系型 DBMS 支持空值(与空字符串或空白字符串不同,与零或任何其他数字不同),用于以系统方式表示缺失信息和不适用信息,与数据类型无关。

因此您无法比较丢失的数据,但您可以检查数据是否丢失。

如果要检查NULL而不是IS NULL,则需要对其进行转换,例如

SELECT fields FROM MyTABLE WHERE IFNULL(MT.SpecificColumn, "NULL VALUE")=@variable

如果您设置@variable="NULL VALUE",它将找到NULL 值。有效与否当然是另一个问题。

【讨论】:

    猜你喜欢
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 2013-09-10
    相关资源
    最近更新 更多