【发布时间】:2012-05-02 02:01:12
【问题描述】:
我正在寻找一个函数来检查列的值是否为 0,其行为类似于 isnull() 函数。
这是我目前得到的:
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 中的|| 运算符的行为一样。
可能有更好的方法来实现我想要的。请不要犹豫告诉我。
【问题讨论】:
标签: mysql substring zero isnull