如果空字符串不等于 MySQL 列与字符串值,则比较空字符串

Comparing empty strings if it is not equal to MySQL column with string values

我不确定这种情况是只与 Coldfusion 有关还是 Mysql。

如果将 TEXT 类型的列与空字符串值进行比较,如果不相等,则此代码有效:

column > ""

但不是这个:

column != ""

在我的 SQL 代码中,假设 TEXT 类型的数据库列附件中包含字符串。 Input Attachment(:attachment)的Form值为空(我想会参考"").

attachment = ( 
    CASE 
        WHEN :attachment = "" AND attachment = "" 
            THEN 1 
        WHEN :attachment = "" AND attachment != "" 
            THEN 2 
        WHEN :attachment != "" AND attachment = "" 
            THEN 3
        WHEN :attachment != "" AND attachment != "" 
            THEN 4 
        ELSE attachment 
    END 
)

此代码将 return 附件 = 3.

但是,如果我使用这个 SQL 代码:

attachment = ( 
    CASE 
        WHEN :attachment = "" AND attachment = "" 
            THEN 1 
        WHEN :attachment = "" AND attachment > "" 
            THEN 2 
        WHEN :attachment > "" AND attachment = "" 
            THEN 3
        WHEN :attachment > "" AND attachment > "" 
            THEN 4 
        ELSE attachment 
    END 
)

这段代码 returns attachment = 2 这是我真正期待的。

那么,比较列是否等于或不等于空字符串的最佳方法是什么?我很少使用 NULL 值,因为当保存 FORM 时,他们输入空字符串。

我认为您应该使用 <> 而不是 != 并且还应该使用单引号而不是双引号 例如

WHEN :attachment <> '' AND attachment <> ''

警告:切勿使用 column > ''

我刚遇到一些 MySql 5.7 的案例,其中 column > '' 结果为 FALSE, 但是 column < '' 结果是 TRUE!!

所以最好检查 LENGTH(column)