0

SQLServerストアドプロシージャに次のクエリがあります

SELECT SZ_SK FROM tbl_Class CC
INNER JOIN tbl_Location LR ON CC.LCTN_RSTN = LR.LCTN_RSTN
WHERE LR.LCTN_RSTN = ISNULL(@Location,LR.LCTN_RSTN)

tbl_Class問題がありますが、LCTN_RSTN値にフィールドがない可能NULL性があることに気付きました。その場合、フィールドを表示する場所が必要なので、これは問題です。どうすればそれができますか?(にのみ存在します。)tbl_LocationNULL@Location = NULLCC.LCTN_RSTN= NULLSZ_SKtbl_Class

4

2 に答える 2

1

LCTN_RSTNが文字列であり、どこにも空の文字列を使用しないと仮定します

SELECT SZ_SK FROM tbl_Class CC
INNER JOIN tbl_Location LR ON ISNULL(CC.LCTN_RSTN, '') = ISNULL(LR.LCTN_RSTN, '')
WHERE LR.LCTN_RSTN = ISNULL(@Location,LR.LCTN_RSTN)

nullを結合します。NULL!= NULLですが、空の文字列に変換します、'' =''

ここでの基本的なテクニックは、実際の範囲外の番兵値を使用することです。たとえば、LCTN_RSTNがIDENTITY(1,1)の場合、nullのデフォルトとして-1を使用します。

于 2013-03-26T17:55:43.130 に答える
1

これを試して

SELECT SZ_SK FROM tbl_Class CC
INNER JOIN tbl_Location LR 
     ON coalesce(CC.LCTN_RSTN,'') = coalesce(LR.LCTN_RSTN,'')
WHERE (@Location is null) or (coalesce(LR.LCTN_RSTN,'') = @Location)
于 2013-03-26T17:56:29.303 に答える