2012-01-24 6 views
0

SQLiteでこのように書くには? nullの場合はオプションのparamと同様に使用しないでください。Sqliteのオプションのパラメータ

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

申し訳ありませんが、このコードは実際に動作しませんか? – everton

答えて

3

あなたはこのような何かを行うことができます:

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

IFNULLが、その最初の非null引数を返します。この場合、@Yearがnullでない限り、クエリは@YearDATEPART(year, Date)を比較します。値がNULLの場合は、DATEPART(year, Date)DATEPART(year, Date)を比較します。これは常に真です。

編集:DATEPARTは、ネイティブのSQLiteメソッドではありません(OPはそれを参照しているため、使用しているカスタムのものになる可能性があります)。ネイティブソリューションはstrftime("%Y", Date)(ありがとう@Jason!)を使用することです

+0

よく考えられた回避策。 – everton

+0

DatePartはSQLite関数ではありませんか? – Jason

+0

@Jason Hm、そうではありません。私はOPが使ったのと同じ方法を使っていました - それは彼が自分のために書いたものかもしれません。 – ean5533

関連する問題