저장 프로 시저에 전달할 변수 매개 변수로 저장된 'NRT, STH, WST, EST, SCT'와 같은 문자열이 있습니다. 그러나 IN 절에서 해당 매개 변수를 사용하고 싶지만 분명히 작동하지 않으므로 분할하여 다음 출력을 얻습니다.
'NRT', 'STH', 'WST', 'EST', 'SCT'
단수 문자열로 가정합니다.
나는 이것을 할 수있는 방법이 있다고 확신하고 여기에서 해결책을 찾으려고 시도한 후 Google에서 이에 대한 정확한 해결책을 찾을 수 없습니다 (이미 존재하는 경우 죄송합니다)
나는 가까워졌지만 그 뒤에 쉼표가있는 마지막 요소가 붙어 있습니다.
이것이 내가 지금까지 가지고있는 것입니다.
DECLARE @region NVARCHAR(MAX)
SET @region = 'NRT, STH, WST, EST, SCT'
Select *
From
Table
Where
RegionId
In (
Select
Coalesce
(
Case When @region = ''
then Name
Else
Name + ','
End,''
)
From
dbo.splitstring(@region)
)
분할 기능을 사용하여 Coalesce를 자체적으로 실행하면 결과는 다음과 같습니다.
따라서 IN 절은 이와 함께 작동하지 않습니다. 이 작업을 수행하는 방법에 대한 아이디어가 있습니까?
아래와 같이 함수를 만듭니다.
create FUNCTION [dbo].[FunctionStringSplit](@stringname NVARCHAR(MAX),@separator nvarchar(1))
RETURNS TABLE
AS
RETURN
WITH cte AS(
SELECT CAST(0 AS BIGINT) AS FirstIndex,CHARINDEX(@separator,@stringname) charposition
UNION ALL
SELECT charposition+1,CHARINDEX(@separator,@stringname,charposition+1)
FROM cte
WHERE charposition>0
)
SELECT SUBSTRING(@stringname,FirstIndex,COALESCE(NULLIF(charposition,0),LEN(@stringname)+1)-FirstIndex) AS splitstring
FROM cte
그런 다음 다음과 같이 select 문에서 함수를 호출하십시오.
Select *
From
Table
Where
RegionId IN
(
SELECT
splitstring
FROM [dbo].[FunctionStringSplit] (@Region,',')
)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다