sql server 查出脏数据,排除单号有文字的记录;查找出重复数据
一、情景
1.比如表1的orderId字段要求是数字,但是表2里该字段存在文字。表2的数据插入表1时,提示 转换数据类型错误,insert失败。
2.表1某个字段是唯一键,但是插入表里的数据却有多个值,insert失败。
二、使用步骤
1.找出存在文字的记录,然后只查询orderId为纯数字的记录的sql。
代码如下(示例):
---查询orderId为文字的记录,长度小于10 的记录
select orderId,*
from test_order where len(orderId)<10 and orderId LIKE '%[^0-9]%'
----查询orderId为数字的记录,长度小于10 的记录
select orderId,*
from test_order where len(orderId)<10 and orderId not LIKE '%[^0-9]%'
2.查出全部重复数据的sql
代码如下(示例):
---用group by,查询单个字段重复的记录
select kh_id from kh
group by kh_id having count(kh_id)>1
-----查询出重复的kh_id的所有信息记录
select kh_id,* from kh where kh_id in
(select kh_id from kh
group by kh_id having count(kh_id)>1)
-----查询不重复的kh_id的所有信息记录
select kh_id,* from kh where kh_id not in
(select kh_id from kh
group by kh_id having count(kh_id)>1)