我正在寻找一个函数来检查列是否具有与 isnull() 函数类似的值 0。

这是我到目前为止所得到的:

CONCAT(
    SUBSTRING_INDEX(
        SUBSTRING(textCol, 1,
            LOCATE(DATE_FORMAT(dateCol,'%d.%m.%Y  %H:%i'), textCol)-1),
            '|',
             -1),
    SUBSTRING(
        textCol,
        LOCATE(DATE_FORMAT(dateCol,'%d.%m.%Y  %H:%i'), textCol),
        IFNULL(
            LOCATE( /* this will return 0 if it's the last entry */
                '|',
                textCol,
                LOCATE(DATE_FORMAT(dateCol,'%d.%m.%Y  %H:%i'), textCol)
            ) - LOCATE(DATE_FORMAT(dateCol,'%d.%m.%Y  %H:%i'), textCol),
            LENGTH(textCol))))

textCol 中的数据有点像一个 CSV 文件,每列内都有另一个 CSV 文件。每个数据集由 | 分隔,而其中的每个数据集由 && 分隔。内部字段是名称、日期(如 '%d.%m.%Y %H:%i')和注释。

我想提取与我在 dateCol 中获得的某个 DATETIME 相对应的数据集。问题是,如果我要查找的是 textCol 中的最后一个条目,则 LOCATE (请参阅注释)返回 0。但这会破坏我的 SUBSTRING,因此仅返回条目的前半部分。

我添加了一个 ISNULL() ,当然这里没有任何作用。我想要做的是类似于 ISNULL() 的东西,它有点像 ISZERO() ,很像 Perl 中的 || 操作符的行为。

可能有一种更好的方法来实现我想要的。请不要犹豫告诉我。

最佳答案

SELECT  CASE expression WHEN 0 THEN 'a substitute for zero' ELSE expression END
FROM    mytable

关于mysql - 像 isnull() 这样的函数来检查零值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10246993/

10-12 20:45