我正在尋找一個函數來檢查列是否具有值0,其行爲像isnull()
函數。mysql - 像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中||
運算符的行爲。
可能有一個更好的方法來實現我想要的。請不要猶豫,告訴我。
http://www.sqlfiddle.com/#!2/a291d/2 – Quassnoi 2012-04-20 13:19:17
謝謝。這將工作。我已經想過''SELECT IF(表達式= 0,'替代零',表達式'')。不過,這兩種情況在我的情況下相當平庸。 – simbabque 2012-04-20 13:26:21