选择两列上包含两个数据的记录

时间:2017-03-31 01:56:46

标签: sql postgresql

我正在使用postgresql,我有一个搜索功能,你可以搜索价格范围。 Textbox1为最低价格,textbox2为最高价格。

表:

CREATE TABLE PRICE_T (ITEM VARCHAR2(255),PRICE_MIN VARCHAR2(6) , PRICE_MAX VARCHAR2(6) ); 

值:

INSERT INTO PRICE_T VALUES ('BOTTLE','450', '450');  
INSERT INTO PRICE_T VALUES ('GUNDAM','500','600');  
INSERT INTO PRICE_T VALUES ('CUP','2700', '4000');  
INSERT INTO PRICE_T VALUES ('BEEF','500','700');  

如果我输入0表示最低价格,输入2000表示最高价格。 所有这些记录都应出现在输出中。但我只得到一个。

这是我的代码:

SELECT * FROM PRICE_T 
WHERE 
            (
                0 BETWEEN PRICE_MIN AND PRICE_MAX 
            )
        OR  (
                2000 BETWEEN PRICE_MIN AND PRICE_MAX 
            )

如何使用两列之间的两个数据选择记录?

1 个答案:

答案 0 :(得分:0)

我认为你与where where子句混淆了。 它应该是

SELECT * FROM PRICE_T
WHERE
(CAST(PRICE_MIN AS DECIMAL(18,2)) BETWEEN 0 AND 2000)
OR
(CAST(PRICE_MAX AS DECIMAL(18,2)) BETWEEN 0 AND 2000)

为什么你的字符串价格为btw

(当您将表格结构更改为没有varchar价格时,您不需要将其转换为十进制。只需使用

SELECT * FROM PRICE_T
WHERE
(PRICE_MIN BETWEEN 0 AND 2000)
OR
(PRICE_MAX BETWEEN 0 AND 2000)