希望有人能帮我。
我正在尝试弄清楚如何才能对数据库字段进行检查。
我有一个名为"level“的字段,它存储的数据类似于"0-7”(从0到7)
如何执行mysql查询以检查:
表“值”:
ID | LEVEL
1 | 0-7
2 | 3-6
3 | 4-5
查询,其中值"4“是任何行"level”之间的值。
谢谢你的帮助!
否则,我将不得不首先获取所有行并进行拆分,以验证您是否创建了一个具有低值和高值的新字段,然后进行比较。
更新:
都是伟大的守望者,但更糟糕的是做这个桌子的笨蛋
已创建和额外的字段,如:
ID | LEVEL | Name
1 | 1-7 | level
2 | 3-6 | xperience
3 | 4-5 | level
4 | 1-5 | level
这意味着我必须根据"Name“= level的位置来子串。有可能吗?
发布于 2013-02-14 20:06:12
如果你不想改变你的模式,下面是你该怎么做的:
create table test(
id integer primary key auto_increment,
level varchar(50)
);
insert into test(level) values('0-7');
insert into test(level) values('3-6');
insert into test(level) values('4-5');
commit;
select *
from test
where 4 between SUBSTRING_INDEX(level, '-', 1) AND SUBSTRING_INDEX(level, '-', -1);
发布于 2013-02-14 20:03:38
创建两个名为"level_min“和"level_max”的字段,并将数据从"0“存储到"7”
然后在查询之间使用mysql
SELECT * FROM t WHERE 4 BETWEEN level_min AND level_max
最重要的是这样的查询可以使用索引,所需的id。
这对于任何或多或少的活生生的数据库都是必不可少的。
发布于 2013-02-14 20:09:47
如上所述,对于性能来说,拆分这两个领域将是一个好主意。如果你因为任何原因不能做到这一点,你可以使用substring_index:
SELECT * FROM values WHERE
substring_index(level,'-',1) <= 4 AND
substring_index(level,'-',-1) >= 4;
https://stackoverflow.com/questions/14874365
复制相似问题