2016-06-16 3 views
0

서버에서 작동하는 SQL 코드입니다.SqlDataSource SelectCommand에 Null 값이 포함되어 있습니다.

SELECT 
    [LINE_NO], [CUST_ORDER_ID], [PART_ID], 
    [CUSTOMER_PART_ID], [MISC_REFERENCE], [PROMISE_DATE], 
    [PROMISE_DEL_DATE] 
FROM 
    [CUST_ORDER_LINE] 
WHERE 
    ([CUST_ORDER_ID] = '33742-1' 
    AND [PROMISE_DATE] IS NULL 
    AND [PROMISE_DEL_DATE] IS NULL) 

내 asp.net 코드.

SelectCommand = "SELECT [LINE_NO], [CUST_ORDER_ID], [PART_ID], [CUSTOMER_PART_ID], [MISC_REFERENCE], [PROMISE_DATE], [PROMISE_DEL_DATE] FROM [CUST_ORDER_LINE] WHERE ([CUST_ORDER_ID] = ? AND [PROMISE_DATE] = ? AND [PROMISE_DEL_DATE] = ?)" 

나는 3 개의 쿼리 문자열 매개 변수를 사용하고 있습니다. 약속 날짜와 약속 배달 날짜는 null 일 수 있습니다. 그러나이 값이 null이면 레코드를 반환하지 않습니다.

= '' 대신 'is null'으로 SQL을 변경하려면 어떻게 프로그래밍해야합니까?

답변

0

나는 이것이 당신이 원하는 생각 :

  • 파람 1 = OrderID를
  • 파람 2/3 모두 약속 날짜
  • 파람 4/5을 둘 약속 배달 날짜에게 있습니다

코드 :

SelectCommand = "SELECT [LINE_NO], [CUST_ORDER_ID], [PART_ID], [CUSTOMER_PART_ID], [MISC_REFERENCE], [PROMISE_DATE], [PROMISE_DEL_DATE] FROM [CUST_ORDER_LINE] WHERE [CUST_ORDER_ID] = ? AND (? IS NULL OR [PROMISE_DATE] = ?) AND (? IS NULL OR [PROMISE_DEL_DATE] = ?)" 

SQL 다음과 같습니다 :

DECLARE @P1 INT, @P2 DATETIME, @P3 DATETIME 

SELECT [LINE_NO], [CUST_ORDER_ID], [PART_ID], [CUSTOMER_PART_ID], [MISC_REFERENCE], [PROMISE_DATE], [PROMISE_DEL_DATE] 
FROM [CUST_ORDER_LINE] 
WHERE [CUST_ORDER_ID] = @P1 
AND (@P2 IS NULL OR [PROMISE_DATE] = @P2) 
AND (@P3 IS NULL OR [PROMISE_DEL_DATE] = @P3) 
+0

정말 고맙습니다. 나는 asp.net에 익숙하지 않았기 때문에 여분의 매개 변수를 연결하지 않았다. 기술적으로 말하자면 SQL은 AND (@ P2는 NULL이거나 [PROMISE_DATE] = @ P3)입니다. AND (@ P4가 NULL이거나 [PROMISE_DEL_DATE] = @ P5) – redhook99

관련 문제