に基づいてジョイン私は、ストアドプロシージャを持っているパラメータの値に基づいて、ジョイン内を持っている必要があります。また、コンマ区切りの値の文字列から値を分割する関数も使用しています。 NULL @earmarkであれば、私はこれがすべてで起こることを参加したくないT SQL条件がパラメータ値
Select *
from view_Project as vp
join inline_split_me(@earmark) as e on (vp.EarmarkId LIKE e.Value and @earmark IS NOT NULL)
次のように私のコードは、私がこれに参加「%」または「119」または「119120121」の文字列を持っているそうでない場合、あります適切な結果が得られなければなりません。 @earmarkがnullの場合、私はちょうどそれが起こらないようにしたいと思っています。私はちょうど@earmarkを使用することができると思っていましたが、@earmarkはnullではありませんが、 @earmarkのparamと同じsprocを実行すると、すべての行が結果として得られます。私はこの結合を保持し、nullを渡すとき、私は行を取得しない、私はこれをしばらくの間、手伝ってきました、どんな助けも高く評価されるでしょう。ここで
はFUNCTIONです:
[inline_split_me](@param nvarchar(MAX))
RETURNS TABLE AS
RETURN(SELECT ltrim(rtrim(convert(nvarchar(4000),
substring(@param, Number,
charindex(N',' COLLATE SQL_Latin1_General_CP1_CI_AS,
@param + convert(nvarchar(MAX), N','),
Number) -
Number)
))) AS Value
FROM APM_Numbers
WHERE Number <= convert(int, len(@param))
AND substring(convert(nvarchar(MAX), N',') + @param, Number, 1) =
N',' COLLATE SQL_Latin1_General_CP1_CI_AS)
がそれを手に入れた、ケイドルーなど
if (@earmark = '%')
select *
from view_Project as vp
where vp.EarmarkId like @earmark
else
select *
from view_Project as vp
where @earmark is null or vp.EarmarkId in (select Value from inline_split_me(@earmark))
@earmarkがnullの場合、結果はview_Projectのすべてである必要がありますか?その場合、inline_split_meに渡されたNULL値が望ましくない結果を生成しない限り、左外部結合を行うことができます。 –
@earmarkがnullの場合はい、私はview_Project –