2012-10-31 77 views
3

如何檢查是否value IS NOT NULL AND TRIM(value) != '' AND value != 0檢查值是否不爲NULL和TRIM(值)!=''AND值!= 0

如果我檢查'string' != 0它總是返回false,所以它不工作。

它適用於不知道其查詢列的類型的通用查詢。

我需要做的是這樣(value IS NUMERIC TYPE AND value != 0)

value可能是一個字符串,日期,時間,一滴,數量等

+0

如何處理包含'0'的字符串? –

+0

@Jack在我的情況下,包含0的字符串將被視爲不爲空,並應返回true。 – Petah

回答

2

也許CAST(value AS int) <> 0

+0

+1看起來是正確的方法。儘管令人沮喪的是,在CAST語句中不允許使用「INT」關鍵字。你需要CAST(v簽名)或類似的。 (也許也是'...或CAST(V AS DECIMAL(M,N))<> 0') – pilcrow

+1

嗯。那些簽名/未簽名的業務總是讓我在MySQL中跳槽。打我爲什麼他們不能使用真正的本地數據類型名稱的功能,並實際轉換爲這些類型。 –

+0

這與''string'!= 0'有相同的結果 – Petah

0

沒有列類型的知識,你可以求助於正則表達式來確定是否進行基於stringish或numberish列數據:

value IS NOT NULL AND 
IF(value REGEXP '^-?[0-9]+(\.[0-9]+)?$', value <> 0, TRIM(value) <> '') 

根據正則表達式的結果,它要麼與之比較的0或反對''

警告包含'0'的字符串將被認爲是空的,但在對MySQL網站進行拖網之後,我無法找到合適的解決方法。

0

我在做SQL數據遷移時使用記錄集做過類似的事情。

如果TRIM(字段(0).value的&「」)>「」那麼「我們有一個值

所以,如果它爲空,就成了一個空字符串,如果它不爲空,就變成了修剪串。 最有效的方法...可能不是,但它的工作原理。