2012-01-24 54 views
0

如何在SQLite中寫這樣的東西?與可選參數類似,如果null不使用。Sqlite可選參數

(@Year IS NULL OR @Year = DATEPART(year, Date) 
+0

對不起,但這段代碼實際上工作嗎? – everton

回答

3

你可以做這樣的事情:

IFNULL(@Year, DATEPART(year, Date)) = DATEPART(year, Date) 

IFNULL返回它的第一個非空參數。在這種情況下,只要@Year不爲空,查詢將比較@YearDATEPART(year, Date)。如果它爲空,那麼它將比較DATEPART(year, Date)DATEPART(year, Date),這將始終爲真。

編輯:注意DATEPART不是本地的SQLite方法(OP引用它,所以它可能是他/她正在使用自定義的東西)。原生解決方案是使用strftime("%Y", Date)(謝謝@Jason!)

+0

經過深思熟慮的解決方法。 – everton

+0

DatePart不是一個SQLite函數? – Jason

+0

@Jason Hm,事實並非如此。我只是使用與OP一樣的方法 - 這可能是他自己寫的。 – ean5533