C#演算子に似た機能を探していますか?:https ://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/conditional-operator
2つのパラメータに基づいてサーバー側でデータをフィルタリングする必要があります。
@CountryIDs-カンマ区切りの値のリストです。例:「27,28,81」-CountryID 27、CountryID 28、CountryID81を意味します
顧客名と一致する@Keyword。
選択する必要のあるCountryIDの完全なリストを提供したくない場合がありますが、すべてを選択したい場合があります。「。」のようなものです。CSVのようなCSVのリストを提供できるカスタム関数「CSV2Table_fn」を作成しました。 CountryID。
DECLARE @CountryIDs nvarchar(4000), @Keyword nvarchar(50)
SET @CountryIDs = '25,28,81'
SET @Keyword = null
if (len(@Keyword) > 0) -- search for names matching keyword
begin
SELECT Name, CountryID FROM Company
WHERE CountryID IN (
SELECT DISTINCT ItemValue FROM CSV2Table_fn(
ISNULL((SELECT
CASE WHEN (SELECT COUNT(*) FROM (SELECT DISTINCT ItemValue FROM CSV2Table_fn(@CountryIDs,',')) t) > 0 THEN @CountryIDs
ELSE null
END
),CountryID),',')
)
AND Name LIKE '%' + @Keyword + '%'
end
else -- no keyword provided
begin
SELECT Name, CountryID FROM Company
WHERE CountryID IN (
SELECT DISTINCT ItemValue FROM CSV2Table_fn(
ISNULL((SELECT
CASE WHEN (SELECT COUNT(*) FROM (SELECT DISTINCT ItemValue FROM CSV2Table_fn(@CountryIDs,',')) t) > 0 THEN @CountryIDs
ELSE null
END
),CountryID),',')
)
end
- 編集:コードは想定どおりに機能するようになりました。ただし、これはあまりクリーンではなく、おそらく最適化できます。