아래의 SQL 쿼리는 결과를 반환합니다.CASE 문이 "IN"으로 작동하지 않습니다.
declare @flag bit = 0
select *
from file_table fd
where fd.person_id = case @flag
when 0 then 10349196
else fd.person_id
end
위의 쿼리는 아래의 두 person_ids를 포함하도록 변경하려고합니다.
declare @flag bit = 0
declare @person_ids varchar(100) = '(1001,1002)'
select *
from file_table fd
where fd.person_id in case @flag
when 0 then @person_ids
else fd.person_id
end
그러나이 쿼리 키워드 '의 경우'근처 오류
잘못된 구문을 던졌습니다
누구도 날이 문제를 해결하는 데 도움이 수 있습니까? 제 의도는 case 문 안에 두 번째 ids (두 번째 쿼리에 표시된대로)를 포함하고자합니다.
주어진 대답은 기본적으로 'IN'에 적절한 형식의 데이터를해야 할 수도 있습니다 우는 소리 쿼리를 사용할 수 있지만, 당신은 여전히있을 것이다 SQL은 변수의 텍스트를 구문 분석하지 않으므로 오류가 발생합니다 ... 정적이 아닌 값으로 이와 같은 작업을 수행하려면 동적 SQL을 사용해야합니다. 또는 두 개의 별도 변수를 사용하고 'IN (@ var1, @ var2)'을 사용하십시오. – ZLK
이것은 구문 오류를 해결합니다. 그러나 테이블에는이 두 사람 ID에 대한 항목이 있지만 결과 세트는 반환되지 않습니다. 왜 그런가? – user3742125
대소 문자를 구분하지 않고 대소 문자를 구분합니다. (값을 반환하기 때문에 !!!) – jarlh