首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mysql Beetween与一个字段进行比较?

Mysql Beetween与一个字段进行比较?
EN

Stack Overflow用户
提问于 2013-02-14 19:59:28
回答 5查看 177关注 0票数 2

希望有人能帮我。

我正在尝试弄清楚如何才能对数据库字段进行检查。

我有一个名为"level“的字段,它存储的数据类似于"0-7”(从0到7)

如何执行mysql查询以检查:

表“值”:

代码语言:javascript
运行
复制
ID  | LEVEL
1   | 0-7
2   | 3-6
3   | 4-5

查询,其中值"4“是任何行"level”之间的值。

谢谢你的帮助!

否则,我将不得不首先获取所有行并进行拆分,以验证您是否创建了一个具有低值和高值的新字段,然后进行比较。

更新:

都是伟大的守望者,但更糟糕的是做这个桌子的笨蛋

已创建和额外的字段,如:

代码语言:javascript
运行
复制
ID  | LEVEL | Name
1   | 1-7   | level
2   | 3-6   | xperience
3   | 4-5   | level
4   | 1-5   | level

这意味着我必须根据"Name“= level的位置来子串。有可能吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-02-14 20:06:12

如果你不想改变你的模式,下面是你该怎么做的:

代码语言:javascript
运行
复制
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);
票数 1
EN

Stack Overflow用户

发布于 2013-02-14 20:03:38

创建两个名为"level_min“和"level_max”的字段,并将数据从"0“存储到"7”

然后在查询之间使用mysql

代码语言:javascript
运行
复制
SELECT * FROM t WHERE 4 BETWEEN level_min AND level_max

最重要的是这样的查询可以使用索引,所需的id。

这对于任何或多或少的活生生的数据库都是必不可少的。

票数 3
EN

Stack Overflow用户

发布于 2013-02-14 20:09:47

如上所述,对于性能来说,拆分这两个领域将是一个好主意。如果你因为任何原因不能做到这一点,你可以使用substring_index:

代码语言:javascript
运行
复制
SELECT * FROM values WHERE 
substring_index(level,'-',1) <= 4 AND 
substring_index(level,'-',-1) >= 4; 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14874365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档