web-dev-qa-db-ja.com

Access SQLの合体代替

T-SQLでは、これを行うことができます。

SELECT ProductId, COALESCE(Price, 0)
FROM Products

Access SQLで同じことをどのように行いますか? VBAでNzを使用してそれを行う例がありますが、SQLで同等のものを探しています。

ありがとう。

31
Nathan DeWitt

AccessはNz関数をサポートし、クエリで使用できるようにします。ただし、NzはT-SQL ISNULL関数と同じであることに注意してください。 COALESCEのように、任意の数のパラメーターを取ることはできません。

21
pipTheGeek

Accessクエリにある場合、これを試すことができます:

"Price = IIf([Price] Is Null,0,[Price])"
17
Codewerks

私はちょうど使用できるように見えます:

SELECT ProductId, Nz(Price, 0)
FROM Products

うまく機能しているようです。

8
Nathan DeWitt

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
6
Patrick Honorez