Sql 选择两列上有两个数据的记录

Sql 选择两列上有两个数据的记录,sql,postgresql,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 ('GU

我使用的是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 
            )

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

我想您可能对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)
顺便说一句,你们为什么有串价

(当您将表结构更改为不包含varchar prices时,不需要将其转换为十进制。只需使用

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

为什么要将数字存储为varchar?将数字存储为varchar将很快给您带来问题。重新考虑您的模型。哦,我明白了。好的,我会将其更改为整数。谢谢您的回答。这非常有效!!