0

次のようなサンプルデータを含む列がテーブルにあります。

ServiceTypeIds
 7,1
 1,9 
 1
 9
 4
 7
 7 

私のWhere句では、以下を使用して検索します。

WHERE (@ServiceTypes IS NULL 
   OR CHARINDEX(','+CAST(SEP.ServiceTypeIDs as VARCHAR(255))+','
              , ','+@ServiceTypes+',') > 0)))

パラメータ@ServieTypesが'1,9'に等しい場合、結果が得られますが、@ ServiceTypes ='1'または単に'9'の場合、何も返されません。私は立ち往生して上記を試しました。

4

2 に答える 2

3

パラメータが逆になっていると思います。

WHERE (@ServiceTypes IS NULL 
       OR CHARINDEX(','+CAST(@ServiceTypes as VARCHAR(255))+',',
                    ','+SEP.ServiceTypeIDs+',') > 0)))

この方法は機能しますが、1つのアイテムを探している場合(または幸運で2つのアイテムが同じ順序になっている場合)に限ります。

于 2012-07-30T02:04:15.907 に答える
0

別の方法

WHERE (@ServiceTypes IS NULL  
   OR ','+@ServiceTypes+',' LIKE '%,'+CAST(SEP.ServiceTypeIDs as VARCHAR(255))+',%') 
于 2012-07-30T05:59:06.590 に答える