문제

복제: TSQL VARCHAR 문자열 조작

SQL 문에서 이것은 괜찮습니다.

WHERE customerState In (@StateList) 

그러나 동적 변형은 괜찮지 않습니다.

SET @WhereClause1 = @WhereClause1 + 'AND customerState IN (' + @StateList + ') '

이것은 (유효하지 않은 SQL)으로 번역되기 때문입니다.

AND customerState IN (AL,CA,NY,TN,VA)

처리하려면 다음과 같은 것이 필요합니다.

AND customerState IN ('AL','CA','NY','TN','VA')

단일 따옴표를 동적 SQL에 삽입하는 데 사용할 수있는 멋진 표현이 있습니까?

도움이 되었습니까?

해결책 3

이것은 중간을 처리합니다.

@stateList = replace (@statelist, ',', '', '' ')를 설정합니다.

그런 다음 가장자리를 인용합니다.

@whereclause1 = @whereclause1 + '를 set and customerstate에서 (' ' + @statelist +' '') '

다른 팁

교체는 어떤 이유로 든 사용될 때 나에게 효과가 없었습니다. 나는 결국 사용했다 charindex

WHERE CHARINDEX( ',' + customerState + ',', ',' + @StateList + ',' ) > 0

create table #temp
(id, FName varchar(100), LName varchar(100))

declare @sqlQuery (nvarchar(max))
set @sqlQuery =
'insert into #temp
select 
id, 
FName, 
LName 
from dbo.table'
exec (@sqlQuery)

select 
FName, LName
from #temp
where #temp.id in (@id) -- @id being an SSRS parameter!

drop table #temp

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top