写了一个sql表,想对这个表进行一些验证,但是不知道where后边的条件怎么加,请高手解答

[复制链接]
查看11 | 回复6 | 2011-8-19 07:19:11 | 显示全部楼层 |阅读模式
1。数据内容有无重复例账号有误重复2.数据的长度是否一致例QQ号是否是9位3日期最大值最小值的限制请把where后边的条件写出来并加以简单说明,谢谢
回复

使用道具 举报

千问 | 2011-8-19 07:19:11 | 显示全部楼层
1.判断表内容是否有重复,可以使用groupbyselectcount(1),账号from表groupby账号having(count(1))1这个是按照账号分组,查询每个账号下的重复次数,大于1的,那么就至少是2,这些记录,就是有重复的账号了。如果你只想知道有没有重复而不关心哪个账号,那么你可以在以上的语句再套一层selectcount(*)from(selectcount(1)ascnt,账号from表groupby账号having(count(1))1)t返回值大于0,那么就一定有重复的了。2.判断QQ号是否是9位:第一种可以逐行判断,以下语句会列出表中所有的行是否符合9位的要求,每行都有判断selectcaselen(qq号)when9then\'Y\'else\'N\'endasis_validfrom表第二种可以直接挑出不符合9位的数据select*from表wherelen(isnull(QQ号,\'\'))93.第三个可以使用casewhen来判断selectcasewhen日期字段=convert(datetime,\'2010-11-30\',120)and日期字段=convert(datetime,\'2011-08-19\',120)then\'日期符合\'else\'日期不在范围内\'endasdate_validfrom表如果只控制where条件,使用exists应该可以,就是存在以上列出的条件,就符合。
回复

使用道具 举报

千问 | 2011-8-19 07:19:11 | 显示全部楼层
1.selectdistinct(账号)from表名查询出来的结果就是有重复的账号2.select*from表名wherelen(QQ号)9查询出来的结果就是qq号长度≠9位的3.没看懂啥意思追问我是有100条数据,我想看着这100条数据里QQ好是否有重复的,还有是不是都是9位第三条是注册时间看看他们的注册时间是否在2010年11月30到2011年8月19日之间
回复

使用道具 举报

千问 | 2011-8-19 07:19:11 | 显示全部楼层
3个问题,3条sql分别查询,没办法和在一起的,和在一起的话出来的结果就是重复的QQ号,且不是9位的,且注册时间不在要求内的。
回复

使用道具 举报

千问 | 2011-8-19 07:19:11 | 显示全部楼层
你说的这些都可以单独验证,不需要加在where后面,插入数据前,先判断是否有了这个账号,号码是否是9位,日期格式是不是正确,如果以上条件都符合那么插入数据库,不符合就重新填写表单,追问我是想给条件然后在表内对比,你说的意思我懂
回复

使用道具 举报

千问 | 2011-8-19 07:19:11 | 显示全部楼层
上面那个人说的对,3个条件没办法一起
回复

使用道具 举报

千问 | 2011-8-19 07:19:11 | 显示全部楼层
这个理论上应该是写进表之前就要验证的。已经写进表了,就不能验证了呀,只能按条件输出。1deletefromTBwhereIDnotin(selectmin(ID)fromTBgroupby列1,列2,列3...)这样做的结果是有重复行,保留id最小的一行。2deletefromTBwherelen(QQ)93deletefromTBwheredate=\'最小值\'anddate=\'最大值\'
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行