SQL Server 2008에 5 개의 nvarchar (최대) 열이있는 데이터베이스 테이블이 있습니다. 우리는 CONTAINS 함수를 사용하여이 열의 텍스트를 찾습니다.SQL Server 동적 열 목록에 함수 포함
우리는 이러한 종류의 쿼리를 사용하여 모든 다섯 개의 열에서 찾아보실 수 있습니다 :
SELECT *
FROM SomeTable ST
WHERE CONTAINS((ST.ColumnA, ST.ColumnB, ST.ColumnC, ST.ColumnD, ST.ColumnE) , '"Strawberry"')
이제 우리는 동적으로 이러한 열 중 하나 이상에 대한 텍스트를 검색합니다. 예를 들어 ColumnB와 ColumnE 만 살펴보십시오. CASE 문을 사용하여 시도했지만 할 수 없습니다.
내가 생각할 수있는 유일한 해결책은 동적 SQL이지만이 문제를 피하는 것이 좋습니다. 전체 쿼리는 매우 복잡합니다. 동적 SQL을 사용하지 않고이 작업을 수행 할 수있는 방법이 있습니까?
:
당신은 같은 것을 끝낼 것이다. – HLGEM
SQL이 논리를 바로 가기로 생각한다면 '대신'또는 '절을 사용 하시겠습니까?'또는 '그래서 첫 번째 절이 거짓이되어 지름길을 만들었습니까? – Andrew
괄호 안의 OR은 첫 번째 매개 변수가 비어 있으면 두 번째 조건을 확인하지 않으며 각 "AND"줄에 대해서도 마찬가지라고 SQL에 알립니다 –