SQL条件where子句不起作用

时间:2016-02-12 09:18:09

标签: sql-server tsql

我正在尝试在SQL中编写一个where子句,其中有一个日期范围搜索,但如果用户输入一个票号,它将完全忽略日期范围。

我遇到的问题是日期范围不起作用,无论您输入的是什么日期(没有票号),它都会返回所有结果。

Opened connection at 12/02/2016 12:26:49 +01:00

SELECT 
    [GroupBy1].[A1] AS [C1]
    FROM ( SELECT 
        COUNT(1) AS [A1]
        FROM [dbo].[fsign_fiche_signaletique] AS [Extent1]
    )  AS [GroupBy1]


-- Executing at 12/02/2016 12:26:52 +01:00

-- Completed in 10 ms with result: SqlDataReader



Closed connection at 12/02/2016 12:26:52 +01:00

Opened connection at 12/02/2016 12:26:52 +01:00

SELECT 
    [GroupBy1].[A1] AS [C1]
    FROM ( SELECT 
        COUNT(1) AS [A1]
        FROM [dbo].[fsign_fiche_signaletique] AS [Extent1]
    )  AS [GroupBy1]


-- Executing at 12/02/2016 12:26:52 +01:00

-- Completed in 5 ms with result: SqlDataReader



Closed connection at 12/02/2016 12:26:52 +01:00

The program '[4316] ConsoleApplication1.vshost.exe' has exited with code -1073741510 (0xc000013a).

1 个答案:

答案 0 :(得分:4)

如果输入空白票号,则第一部分的评估结果为:

weighing.TicketNo LIKE '%%'

有多少条记录满足?所有这些。

我建议你试试这个:

(ISNULL(@TicketNo,'') <> '' AND weighing.TicketNo LIKE '%'+ @TicketNo + '%')
OR 
(ISNULL(@TicketNo,'') = ''  AND [Weighing].[WeighingDate] 
 BETWEEN @startDate AND @endDate)