我正在使用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
)
如何使用两列之间的两个数据选择记录?
答案 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)