【问题标题】:How to spot the differences between two value columns?如何发现两个值列之间的差异?
【发布时间】:2017-06-25 09:32:45
【问题描述】:

我在 postgreSQL 中使用 except 语法来检查两个表中的地址是否匹配,以下是不匹配的值。

select Address from allsalesdata
except
select Address from addresses

我已复制丢失的地址并粘贴到 Excel 中以检查数据源(地址),但我无法发现差异。我已经检查了 Excel 中的 if 和 exact 公式,以检查这两个值是否匹配并且答案是否定的。如何在 SQL 中发现两列值之间的差异?

    allsalesdata                         addresses

111 Thoroughbred Avenue         111 Thoroughbred Avenue 
222 Bannerdale Blvd             222 Bannerdale Blvd 
3333 Stampede Drive             3333 Stampede Drive 
444 Stampede Drive              444 Stampede Drive 
555 Thoroughbred Avenue         555 Thoroughbred Avenue 

【问题讨论】:

  • 可能是前导空格?
  • 是的,做到了。有前导空格。 SQL也会考虑这个吗?我了解 Python 和编程语言,但也了解 SQL。

标签: sql postgresql


【解决方案1】:

尝试使用trim

trim([前导 | 尾随 | 字符串中的 [字符])

从字符串的开头/结尾/两端删除仅包含字符(默认为空格)的最长字符串

select trim(both ' ' from Address) as Address from allsalesdata
except
select trim(both ' ' from Address) as Address from addresses

【讨论】:

    【解决方案2】:

    正如 McNets 指出的那样,您可以删除他提到的前导和尾随空格。如果您不仅有空格,那么您可能希望使用this answer中所述的正则表达式功能@

    如果您想要发现差异以供以后处理,我建议将“差异”表(选择除外)写入启用引号的 csv,以便您可以使用文本编辑器或 linux 命令来发现那些讨厌的字符。

    【讨论】:

      猜你喜欢
      • 2020-10-09
      • 1970-01-01
      • 1970-01-01
      • 2015-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多