日期:2014-05-17  浏览次数:20579 次

如何写这样的排除条件语句?
本帖最后由 xuyirui2004 于 2012-12-25 02:52:33 编辑
最近程序转换,数据库也变了,原本的程序是自己写的。
email里没有限制好,导致有些老会员email可以随意填写,转换的时候出错了。
怎么在数据库表user 列email查找 格式不是 xxx@xxx.xxx 并删除?

delete from [user] where Address 电子邮箱='@' 
 这样不行 

消息 4145,级别 15,状态 1,第 1 行
在应使用条件的上下文(在 '电子邮箱' 附近)中指定了非布尔类型的表达式。

------解决方案--------------------
用的什么数据库?如果是oracle的话可以试试这个
delete from user where user_id in (SELECT user_id
FROM user WHERE     REGEXP_LIKE(email, '\w+@\w+(\.\w+)+'))

------解决方案--------------------
delete from [user] where [Address 电子邮箱] like '%@%' 

------解决方案--------------------
“Address 电子邮箱” 是指什么呢? 
 如果你的邮箱地址是存在 user表的 email字段,并且要求email格式是 xxx@xxx.xxx 
 那么这样查可以查到部分错误的email地址:
select * from user where email not like '%@%.%' 
删除就简单了,按照上面语句删除就好了:
delete from user where email not like '%@%.%'