주소를 선택하는 저장 프로 시저를 쓰고 있습니다. 많은 선택 매개 변수가 있지만 나에게 문제가되는 원인은 상태를 선택하는 것입니다. 국가는 필수이며 하나 이상의 국가 이름을 가질 수 있습니다. 국가가 USA 인 경우 상태는 NULL 또는 일대 다 많은 상태 코드가 될 수 있습니다. 나는 테이블 반환 함수 (ParmTable_String)가 그래서 매개 변수 목록에 가입 할 수 있으며이 상태 코드가있을 때 작동합니다SQL 조인 매개 변수 목록 또는 null
DECLARE @Country AS varchar(MAX);
DECLARE @State AS varchar(256);
SET @Country = 'USA';
SET @State = 'ME, VT';
SELECT *
FROM Customer
JOIN ParmTable_String(@Country, ',') AS CT
ON Country = CT.str
JOIN ParmTable_String(@State, ',') AS ST
ON State = ST.str
하지만 @State = null
만약 내가 널 결과 집합을 얻을. 내가 왼쪽 조인을 만들고 where 절을 추가하면 단일 상태 코드 나 null에서는 작동하지만 목록에서는 작동하지 않습니다.
WHERE State = @State OR @State IS NULL
누구나 해결책이 있습니까?
확인을 나는 해결책을 가지고 있지만 나는 이것이 나에게 조금 원유 보인다 더 나은 방법이 있다고 생각 해요 :
DECLARE @Country AS varchar(MAX);
DECLARE @State AS varchar(256);
SET @Country = 'USA';
SET @State = 'ME, VT';
SELECT *
FROM Customer
JOIN ParmTable_String(@Country, ',') AS CT
ON Country = CT.str
WHERE (State IN
(SELECT str from lntw.ParmTable_String(@State, ',')) OR @State IS NULL)
ansi_nulls를 해제 했습니까? –
예 및 테이블 반환 함수에서 반환 된 문자열에 NULLIF를 시도했지만 결과가 없습니다. – GBrookman
ParmTable_String에 대한 코드와 예상 결과의 예를 게시 하시겠습니까? 나는 좋은 해결책을 가지고 있다고 생각하지만, 알기가 어렵다. –