2

SQLとasp.netで検索機能を実行しようとしています。次の sqldatasource sql ステートメントを使用してデータを取得する Gridview を作成しました。

SELECT customer.fisrtname,
       customer.lastname,
       customer.initials,
       customer.title,
       address.street,
       area.area,
       suburb.suburbname
FROM   address
       INNER JOIN area
               ON address.areaid = area.areaid
       INNER JOIN areasuburb
               ON area.areaid = areasuburb.areaid
       INNER JOIN customeraddress
               ON address.addressid = customeraddress.addressid
       INNER JOIN customer
               ON customeraddress.customerid = customer.customerid
       INNER JOIN suburb
               ON areasuburb.suburbid = suburb.suburbid
WHERE  ( customer.lastname LIKE '%' + @Lastname + '%' )
        OR ( address.street LIKE '%' + @Street + '%' ) 

私が抱えている問題は、ユーザーが姓フィールドに値を入力しない場合、有効なデータがあってもステートメントがデータを返さないことです。

これについて何か助けていただければ幸いです。

4

2 に答える 2

1

オプションのパラメーターを実行する 1 つの方法を次に示します。

WHERE  (@Lastname is NULL or customer.lastname LIKE '%' + @Lastname + '%' ) or
       (@Street is NULL or address.street LIKE '%' + @Street + '%' ) 

パラメータが である場合は条件を無視するだけですNULL(または= ''、パラメータが入力されていないという事実をどのように表現するかによっては、 を使用する場合があります)。

于 2013-07-24T15:06:14.260 に答える
0

@LastName が null の場合は、CASE ステートメントを使用してアンダースコア (アンダースコアは 1 文字のワイルドカード) に置き換えてみてください。

すると、こうなる・・・。

WHERE  
  ( customer.lastname LIKE '%' + CASE WHEN (@LastName IS NULL) THEN '_' ELSE @Lastname END + '%' )
OR
  ( address.street LIKE '%' + @Street + '%' ) 
于 2013-07-24T15:10:14.220 に答える