列の値が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'、コメントです。
取得した特定のDATETIMEに対応するデータセットを抽出したいと思いdateColます。問題は、探しているものがの最後のエントリであるtextCol場合、LOCATE(コメントを参照)が0を返すことです。しかし、それは私の問題SUBSTRINGであるため、エントリの前半のみが返されます。
を追加しましたISNULL()が、もちろんここでは何もしません。私がやりたいのは、Perlの演算子が動作するのと同じように、ISNULL()その種の動作に似たものを用意することです。ISZERO()||
私が望むことを達成するための全体としてより良い方法があるかもしれません。遠慮なく教えてください。