3
儘管在每個地方我發現它讀取MIN()
只會返回NULL
如果一行是空的,對我來說它是不同的。
我有如下表:SQLite Min函數在字符串數據行中返回NULL
+---+------------+------------+------------+
| | column1 | column2 | column3 |
+---+------------+------------+------------+
| 3 | 2016-11-01 | 2016-11-02 | 2016-10-27 |
| 4 | NULL | NULL | 2016-10-28 |
| 5 | 2013-12-12 | 2016-11-02 | 2016-10-30 |
+---+------------+------------+------------+
並嘗試使用
SELECT MIN(column1, column2, column3) FROM myTable
使用
WHERE STRFTIME('%Y-%m-%d', MIN(column1, column2, column3)) BETWEEN DATE('2000-01-01') and DATE('2016-11-10');
但是第一線返回來比較它得到各行的最小值以下輸出:
+-------------------------------+
| MIN(column1, column2, column3 |
+-------------------------------+
| 2016-10-27 |
| NULL |
| 2013-12-12 |
+-------------------------------+
而生成的WHERE
語句將不包含該行。
我所期待的:
+-------------------------------+
| MIN(column1, column2, column3 |
+-------------------------------+
| 2016-10-27 |
| 2016-10-28 |
| 2013-12-12 |
+-------------------------------+
我怎麼能更改該語句不包括NULL
細胞或更改表的正常工作?
編輯:永遠不會是一個完全空的行!該表連接到將要處理該問題的Java應用程序。
這個偉大的工程!這實際上可以解決我的問題......我可以將默認值設置爲這個較高的日期並創建具有該值的行。你說的;它不是很乾淨,但除非沒有其他解決方案,我會採取的!謝謝。不過,我會等一下,看看是否會有其他答案:) – geisterfurz007
@ geisterfurz007是的,請稍等片刻。另外請注意,如果缺少所有三個值,我的解決方案就不那麼好了。在這種情況下,你會得到'9999-01-01'作爲最小日期,這是錯誤的(它應該是NULL)。你可以用'CASE'表達式將整個調用包裝到'MIN'中,該表達式檢查'9999-01-01',但現在這真的會變得很難看。 –
永遠不會有一個完全空的行。我忘了在問題中提到這一點。將有一個Java應用程序處理這個問題。 – geisterfurz007