在未排序的数字上执行MySQL选择

时间:2014-02-02 01:05:56

标签: mysql

我正在开发一个应用程序,要求我验证3个随机生成的数字是否与从用户输入输入数据库的3位数字符串相匹配。我还需要保留用户输入字符串的确切顺序,因此不能选择输入排序。

例如,随机生成的数字可能是6 4 0,而在数据库中,字符串可能显示为' 406'

有没有一种简单的方法可以在单个查询中完成,而无需枚举选项或添加额外的列/视图?

2 个答案:

答案 0 :(得分:0)

将三个随机数字相加

这样的东西
Select * From Triplets Where (Ascii(Substring(Number,0,1)) - 48) + (Ascii(substring(Number,1,1)) -48) +
(Ascii(substring(Number,2,1)) -48) = MySumOfNumber

容易是一种心态不是它,存储要求额外的“CheckSum”int,而不是像这样的查询的高成本。

答案 1 :(得分:0)

也许你可以试试

create table y (z varchar(10));
insert into y values ('406');
insert into y values ('604');
insert into y values ('446');
insert into y values ('106');
insert into y values ('123');

然后

SELECT * from y where FIND_IN_SET(Substring('640',1,1),MAKE_SET(7,Substring(z,1,1),Substring(z,2,1),Substring(z,3,1))) and FIND_IN_SET(Substring('640',2,1),MAKE_SET(7,Substring(z,1,1),Substring(z,2,1),Substring(z,3,1))) and FIND_IN_SET(Substring('640',3,1),MAKE_SET(7,Substring(z,1,1),Substring(z,2,1),Substring(z,3,1)));

返回

406 
604