我在 2 个不同的表格中有 2 组电话号码,table 1
有直接的格式,01234567890
另一个表格有 3 种不同的格式,有时是01234567890
or01234 567890
或01234-567890
。
目前,我只是在表上进行内部联接,并且只返回几行,但会期望更多,因为显然任何带有连字符或空格的东西都会从联接中丢失。
系统的方式是我无法使用 3 种格式更改表中的数据,因此无法对其进行标准化或清理等。
解决这个问题的最佳方法是什么?
我在 2 个不同的表格中有 2 组电话号码,table 1
有直接的格式,01234567890
另一个表格有 3 种不同的格式,有时是01234567890
or01234 567890
或01234-567890
。
目前,我只是在表上进行内部联接,并且只返回几行,但会期望更多,因为显然任何带有连字符或空格的东西都会从联接中丢失。
系统的方式是我无法使用 3 种格式更改表中的数据,因此无法对其进行标准化或清理等。
解决这个问题的最佳方法是什么?
好吧,您可以考虑在第二个表中创建一个计算列来规范电话号码格式 - 例如:
ALTER TABLE dbo.YourSecondTable
ADD NormalizedPhone AS REPLACE(REPLACE(PhoneColumn, '-', ''), ' ', '') PERSISTED
此表达式从 中删除任何空格和任何破折号,PhoneColumn
并且这些值存储在名为 的新计算列NormalizedPhone
中。
此列将始终保持最新 - 即使您PhoneColumn
稍后更改 ' 值。它将始终自动包含规范化的电话号码。
现在,您可以轻松地将标准化电话字符串上的两个表连接起来,并且您应该得到更准确的结果。