请教大家:关于sql中数字匹配问题
表lottery中有10万条彩票数据,
字段lottery_code表示彩票号码,
status字段表示是否中奖,0未中,1是一等奖,2是二等奖,依次类推,
现在摇奖的号码是123456(假定彩票号码是6位数),
怎么写sql语句??更新彩票数据。
如数据库中已有数据 A买的彩票数123457
B的111115
C的是888888
本期摇奖号123456
那么 A中了5个数 应把status字段更新为2
B只中了1个 status字段更新为1
C没有任何匹配数 status更新0
(假设只有6个数,6个数一一对应为一等奖,status为1。有5个数一一对应为二等奖,status为2,依次类推。
且有顺序之分,也就是说1、2、3 和2、1、3匹配数为1)
不用在java写代码,只用sql语句怎么实现??
字段lottery_code表示彩票号码,
status字段表示是否中奖,0未中,1是一等奖,2是二等奖,依次类推,
现在摇奖的号码是123456(假定彩票号码是6位数),
怎么写sql语句??更新彩票数据。
如数据库中已有数据 A买的彩票数123457
B的111115
C的是888888
本期摇奖号123456
那么 A中了5个数 应把status字段更新为2
B只中了1个 status字段更新为1
C没有任何匹配数 status更新0
(假设只有6个数,6个数一一对应为一等奖,status为1。有5个数一一对应为二等奖,status为2,依次类推。
且有顺序之分,也就是说1、2、3 和2、1、3匹配数为1)
不用在java写代码,只用sql语句怎么实现??
weiking
2006-09-25 19:22:51
评论:2
阅读:252
引用:0
thanks
@2006-09-26 15:09:06 weiking
谢谢hofman,可以实现。
一个笨方法
@2006-09-26 00:40:06 hofman
刚好学校机房充值卡的密码为10位随机数字,可以作一个实验.
设初始status=0;
一等奖: status=6
update lottery set status=status+1 where lotter_code ~ '^1'; 第1位为1者得1分
update lottery set status=status+1 where lotter_code ~ '^.2'; 第2位为2者得1分
update lottery set status=status+1 where lotter_code ~ '^..3'; 第3位为3者得1分
update lottery set status=status+1 where lotter_code ~ '^...4'; 第4位为4者得1分
update lottery set status=status+1 where lotter_code ~ '^....5'; 第5位为5者得1分
update lottery set status=status+1 where lotter_code ~ '^.....6'; 第6位为6者得1分
得6分者为一等奖,得5分者二,类推.
实验数据库为postgresSql 8.1
设初始status=0;
一等奖: status=6
update lottery set status=status+1 where lotter_code ~ '^1'; 第1位为1者得1分
update lottery set status=status+1 where lotter_code ~ '^.2'; 第2位为2者得1分
update lottery set status=status+1 where lotter_code ~ '^..3'; 第3位为3者得1分
update lottery set status=status+1 where lotter_code ~ '^...4'; 第4位为4者得1分
update lottery set status=status+1 where lotter_code ~ '^....5'; 第5位为5者得1分
update lottery set status=status+1 where lotter_code ~ '^.....6'; 第6位为6者得1分
得6分者为一等奖,得5分者二,类推.
实验数据库为postgresSql 8.1
