如何判断数据格式不一致本身是否一致



一个客户端向我们发送了几个表,我们需要这些表能够相互交叉引用。不幸的是,我们需要用于交叉引用的列的数据格式不一致。

然而,看起来它们以一致的方式不一致。也就是说,在一列中有一个"名称",在另一列中,名称前面有一个4位数的id代码和一个空格,所以是"1234名称"。

如果不一致确实是一致的,那么我们可以通过调用MySQL子字符串函数来按原样使用数据。但我不相信。我如何确定这些不一致是否具有普遍性?如果还有其他我没有看到的不一致呢?

我需要知道的是,做列A中的所有唯一值=子字符串(列B,6)中的所有独特值。

我不擅长MySQL,尝试过一些查询,但它们要么返回所有结果(不是不同的结果),要么在服务器上被"中断",因为有很多数据,它们需要很长时间才能运行。帮助

您可以使用not exists子句:

select t1.*
from t1
where not exists (select 1
from t2
where t2.name = substring(t1.columnB, 6)
);

这将根据您给定的规则识别所有在t2中没有匹配名称的t1.columnB

这是一个需要解决的可怕问题,尤其是在您不熟悉SQL的情况下。

原则上,我总是把这类数据视为"不可信"——随着时间的推移,你认为适用的任何规则通常都是错误的。

我的策略是通过运行SQL查询,使用"脏"数据来填充类似的"干净"表,而不是直接使用"脏的"数据。

因此,您可以使用您认为最有效的模式创建两个表<然后通过将CCD_ 4插入该表来填充该表。通过添加where子句(例如isnumeric(substring(t1.columnB, 6))),您可以验证您的假设。

一旦"清理"了表,就可以轻松地执行联接。

最新更新