正しい 5 つの結果を返すクエリがあります。私は今、それをストアドプロシージャに書き直そうとしています。
元のクエリ:
SELECT something FROM myTable where
ORG + '-' + ORGSUB like '2342342-________' or
ORG + '-' + ORGSUB like '5435354-________' or
ORG + '-' + ORGSUB like '_______-________'
しかし、カンマ区切りのリストとして渡したいORG
ので、次のようになります。
SELECT ORG + '-' + ORGSUB FROM myTable where
ORG + '-' + ORGSUB in('2342342-________','5435354-________' ,'_______-________')
しかし、私はここで0の結果を得ています。
また、次のように Split 関数を使用してみました。
ALTER FUNCTION [dbo].[udf_Split]
(
@psCSString VARCHAR(max)
)
RETURNS @otTemp TABLE(sID VARCHAR(50))
AS
BEGIN
DECLARE @sTemp VARCHAR(50)
WHILE LEN(@psCSString) > 0
BEGIN
SET @sTemp = LEFT(@psCSString, ISNULL(NULLIF(CHARINDEX(',', @psCSString) - 1, -1),
LEN(@psCSString)))
SET @psCSString = SUBSTRING(@psCSString,ISNULL(NULLIF(CHARINDEX(',', @psCSString), 0),
LEN(@psCSString)) + 1, LEN(@psCSString))
INSERT INTO @otTemp VALUES (@sTemp)
END
RETURN
END
ストアド プロシージャを作成し、すべての変数を一番上に宣言する
SELECT something
FROM myTable
where ORG + '-' + ORGSUB in (select * from udf_Split(@orgList) as Split)
しかし、これも私に大きな脂肪0を与えます。