复杂的 SQL 其中子句具有大于和小于


@fromValue FLOAT; @toValue FLOAT;
SELECT *
 FROM INVOICE
 WHERE TOTAL > @fromValue and TOTAL < @toValue

我有一个带有总计列的发票表。我想在这样的组合框中选择 3 个条件:

  • 总<100 --> (@fromValue = 0 ; @toValue = 100)
  • 100 <总计><200> (@fromValue = 100 ; @toValue = 200)
  • 总计> 500 --> (@fromValue =500;@toValue ???)

你可以传递这样的变量:

DECLARE @fromValue DECIMAL(18,4), @toValue DECIMAL(18,4);
SET @fromValue = 500 ; -- depending on initial value
--SET @toValue = NULL;
SELECT *
FROM INVOICE
WHERE TOTAL BETWEEN ISNULL(@fromVALUE,0) AND ISNULL(@toValue,9999999);

我一定错过了什么,因为它看起来太简单了?

SELECT 
    *
FROM
    Invoice
WHERE
    Total < 100 OR Total Between 100 and 200 OR Total > 500

我无法想象或理解您确切需要什么,但是如果您想传递两 (2) 个值并使用它,那么:

SELECT *
FROM INVOICE
WHERE TOTAL BETWEEN @fromValue AND @toValue;

最新更新