【问题标题】:How to check if SQLite row is empty如何检查 SQLite 行是否为空
【发布时间】:2021-08-16 17:50:40
【问题描述】:

如果值为空,我有以下内容仅插入到列 two

UPDATE name 
SET one=?,
    two=COALESCE(two, ?),
    three=? 
WHERE id = ?

但是,这仅在列 two 的值为 null 时才有效。如果它是NULL OR an empty string,我怎样才能让它工作。

它应该总是插入到onethree。它应该只插入到 two 如果它是 NULL 或空

我在 PHP 中使用 SQLite

【问题讨论】:

    标签: php sql sqlite


    【解决方案1】:

    如果“空”是指空字符串,则可以使用nullif()

    two = COALESCE(NULLIF(two, ''), ?)
    

    更通用的解决方案是CASE 表达式。

    【讨论】:

      【解决方案2】:

      不要在TEXT 列中存储空字符串。
      更新表格以将所有空字符串替换为NULLs:

      UPDATE name
      SET two = NULL
      WHERE TRIM(two) = ''
      

      现在您可以使用正确的查询,在任何其他查询中您只需要检查NULL

      【讨论】:

      • @jefiwo NULL 的概念是它表示缺少信息 (en.wikipedia.org/wiki/Null_(SQL)),而空字符串是有效的字符串值。另外,只是为了实用。是否要检查 2 个(或更多)条件:列是否为 NULL、是否为空、是否包含空格?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      • 1970-01-01
      • 2016-09-13
      • 2017-11-15
      • 2020-05-29
      相关资源
      最近更新 更多