Mysql之间比较一个字段?

时间:2013-02-14 11:59:28

标签: php mysql

希望有人可以帮助我...

我试图找出如何对数据库字段进行检查。

我有一个名为“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的位置进行子串。 有可能吗?

5 个答案:

答案 0 :(得分:3)

创建名为“level_min”和“level_max”的2个字段,并将它们存储在“0”到“7”的数据中 然后使用mysql BETWEEN查询

SELECT * FROM t WHERE 4 BETWEEN level_min AND level_max

最重要的是这样的查询可以使用indedex,id需要。
这对于任何或多或少的生活数据库都是必不可少的

答案 1 :(得分:1)

如果您不想更改架构,请按以下步骤操作:

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);

答案 2 :(得分:0)

如上所述,分割场地的表现是一个好主意。 如果您因任何原因无法做到这一点,您可以使用substring_index:

SELECT * FROM values WHERE 
substring_index(level,'-',1) <= 4 AND 
substring_index(level,'-',-1) >= 4; 

答案 3 :(得分:0)

select * from table_name where 4 between SUBSTRING_INDEX(LEVEL,'-',1) 
and SUBSTRING_INDEX(LEVEL,'-',-1);

答案 4 :(得分:-1)

我会将关卡字段拆分为2个字段,分钟和最大值,以使生活更轻松。 但你可以做一个

select Id from table where 4 between SUBSTRING(level, 0, 1) and SUBSTRING(level, 2, 1)

关于您当前的数据。 Mysql应该自动将子字符串转换为int。