[英]insert range of values in sql
CREATE TABLE RECHARGE(
R_LVL VARCHAR(20) NOT NULL PRIMARY KEY,
AMOUNT NUMBER,
POINTS_1 NUMBER
);
insert into RECHARGE
VALUES ('S1',(2950-4950),250);
我有上面的代码,我正在尝试为属性数量中的值插入一个范围,如下所示:
s1 : 2950-4950
s2: 5000-9950
s3: 10000-30000
所以每个lvl都有自己的数据范围,这可能吗?
数字数据类型不能存储特殊字符,如-
。 您必须使其成为 VARCHAR 或使用单个数字存储 2 行,例如 -
insert into RECHARGE
VALUES ('S1',2950,250);
insert into RECHARGE
VALUES ('S1',4950,250);
或者您也可以使用 2 列也像 FROM-TO 来显示您的日期范围,例如 -
CREATE TABLE RECHARGE(
R_LVL VARCHAR(20) NOT NULL PRIMARY KEY,
AMOUNT_FROM NUMBER,
AMOUNT_TO NUMBER,
POINTS_1 NUMBER
);
insert into RECHARGE
VALUES ('S1',2950,4950,250);
然后在 SELECT 查询中你可以生成你想要的结果。
范围由 2 个值组成,将其存储在 2 列中。
表达式(2950-4950)
等于-2000
(2950 减去 4950)。
您应该创建两列或只存储范围的边界之一。 我建议存储这两个值,因为它更容易查询:
CREATE TABLE RECHARGE(
R_LVL VARCHAR(20) NOT NULL PRIMARY KEY,
LOWER_BOUNDARY NUMBER,
UPPER_BOUNDARY NUMBER,
POINTS_1 NUMBER
);
您需要确定边界是封闭的(<=、>=)还是开放的(<、>)。
所以你可以像这样查询它们:
SELECT * FROM Recharge WHERE LOWER_BOUNDARY <= 2000 AND UPPER_BOUNDARY > 2000
其中 2000 是您要查找范围的值。
你可以通过添加一些约束来使这个东西更安全:
可以使用下一个查询
插入充值值 ('S1',(2950-4950),250) ('S2',(5000-9950),250) ('S3',(10000-30000),250);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.