Sql 选择两列上有两个数据的记录
我使用的是postgresql,我有一个搜索功能,你可以搜索价格范围。Textbox1表示最低价格,textbox2表示最高价格 表: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
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将很快给您带来问题。重新考虑您的模型。哦,我明白了。好的,我会将其更改为整数。谢谢您的回答。这非常有效!!