我正在寻找一个函数来检查列的值是否为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()
的东西,它类似于Perl中的||
运算符。
也许有更好的方法来实现我想要的功能。请不要犹豫告诉我。