我正在寻找一个函数来检查列是否具有与 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/