T-SQLでは、これを行うことができます。
SELECT ProductId, COALESCE(Price, 0)
FROM Products
Access SQLで同じことをどのように行いますか? VBAでNzを使用してそれを行う例がありますが、SQLで同等のものを探しています。
ありがとう。
AccessはNz関数をサポートし、クエリで使用できるようにします。ただし、NzはT-SQL ISNULL関数と同じであることに注意してください。 COALESCEのように、任意の数のパラメーターを取ることはできません。
Accessクエリにある場合、これを試すことができます:
"Price = IIf([Price] Is Null,0,[Price])"
私はちょうど使用できるように見えます:
SELECT ProductId, Nz(Price, 0)
FROM Products
うまく機能しているようです。
Iif(Price is null, 0, Price)
を使用すると、最高のパフォーマンスが得られます( Allen Browneのパフォーマンスのヒント を参照)。ただし、SQL Server Coalesce()
には、カスケードで複数のパラメーターを処理できるというIif()
およびNz()
よりも大きな利点があります。そこで、このクイックVBAの同等物を作成しました。
Function Coalesce(ParamArray varValues()) As Variant
'returns the first non null value, similar to SQL Server Coalesce() function
'Patrick Honorez --- www.idevlop.com
Dim i As Integer
Coalesce = Null
For i = LBound(varValues) To UBound(varValues)
If Not IsNull(varValues(i)) Then
Coalesce = varValues(i)
Exit Function
End If
Next
End Function