【问题标题】:SqlDataSource SelectCommand contains null valuesSqlDataSource SelectCommand 包含空值
【发布时间】:2016-06-16 21:34:52
【问题描述】:

在服务器上运行的我的 SQL 代码。

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 时,它不会返回任何记录。

我该如何编程以将 SQL 更改为 'is null' 而不是 = ''

【问题讨论】:

    标签: asp.net sql-server sqldatasource


    【解决方案1】:

    我想这就是你想要的:

    • 参数 1 = 订单 ID
    • Param 2/3 都是 Promise Date
    • 参数 4/5 都是 Promise Delivery Date

    代码:

    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)
    

    【讨论】:

    • 非常感谢您的帮助。我是 asp.net 的新手,所以我没有在额外参数之间建立联系。从技术上讲,SQL 将是 AND (@P2 IS NULL OR [PROMISE_DATE] = @P3) AND (@P4 IS NULL OR [PROMISE_DEL_DATE] = @P5)
    猜你喜欢
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 2012-04-20
    • 2010-10-15
    • 2015-11-05
    • 1970-01-01
    相关资源
    最近更新 更多