我正在开发一个应用程序,要求我验证3个随机生成的数字是否与从用户输入输入数据库的3位数字符串相匹配。我还需要保留用户输入字符串的确切顺序,因此不能选择输入排序。
例如,随机生成的数字可能是6 4 0,而在数据库中,字符串可能显示为' 406'
有没有一种简单的方法可以在单个查询中完成,而无需枚举选项或添加额外的列/视图?
答案 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