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

1。数据内容有无重复 例账号有误重复
2.数据的长度是否一致 例QQ号是否是9位
3日期最大值最小值的限制

请把where后边的条件写出来并加以简单说明,谢谢
1.判断表内容是否有重复,可以使用group by
select count(1), 账号 from 表 group by 账号 having(count(1)) > 1
这个是按照账号分组,查询每个账号下的重复次数,大于1的,那么就至少是2,这些记录,就是有重复的账号了。
如果你只想知道有没有重复而不差缺绝关心哪个账号,那么你可以在以上的语句再套一层
select count(*) from
(select count(1) as cnt, 账号 from 表 group by 账号 having(count(1)) > 1) t
返回值大于0,那么就一定有重复的了扮如。

2. 判断QQ号虚姿是否是9位:
第一种可以逐行判断,以下语句会列出表中所有的行是否符合9位的要求,每行都有判断
select case len(qq号) when 9 then 'Y' else 'N' end as is_valid from 表
第二种可以直接挑出不符合9位的数据
select * from 表 where len(isnull(QQ号,'')) <> 9
3.第三个可以使用case when来判断
select case when 日期字段 >= convert(datetime, '2010-11-30', 120) and 日期字段 >= convert(datetime, '2011-08-19', 120) then '日期符合' else '日期不在范围内' end as date_valid
from 表

如果只控制where条件,使用exists应该可以,就是存在以上列出的条件,就符合。
1.select distinct(账号) from 表名
查询出来的结果就是有重复的账号
2.select * from 表名 where len(QQ号闭毁)<>9
查询出来的结果就是qq号长度≠9位派塌的
3.没看懂啥意思尘态圆
这个理论上应该是写进表之前就要验证的。
已经写进表了,就不能验证了呀,轮核配只能按条件输出。
1
delete from TB where ID not in(select min(ID) from TB group by 列1,列2,列氏简3...)
这样做的结果是有重腊指复行,保留id最小的一行。
2
delete from TB where len(QQ)<>9
3
delete from TB where date>='最小值' and date>='最大值'
你说的这些都可以单独验证,不需要加在where后面,
插入数据前,凳改先判断是否有了这个枣扰判账号,号码是否是9位,日期格式是不是正确,如果以上条件都符合那李闷么插入数据库,不符合就重新填写表单,