加入不同格式的电话号码

时间:2017-02-16 17:37:11

标签: sql join

我需要在具有不同格式的电话号码的字段上的两个表上进行oracle SQL连接。一个表上的字段格式为555-555-5555,另一个表格(555)555-5555。

可以使这项工作的语法是什么?表格足够小我可以通过删除区号来获得,只关注最后4位数。

有可能吗?如果我不能进行连接,我会对简单比较的语法感到好奇,例如:where last4(phonenumber)='4567'

2 个答案:

答案 0 :(得分:3)

如果你想比较整数,你可以使用regexp_replace只保留数字,然后进行比较:

where regexp_replace(phone_number,'\D','') = '55555551234';

\D匹配非数字字符并将其删除。

如果最后4位数字,您可以使用substr:

where substr(phone_number,-4) = '1234';

答案 1 :(得分:1)

基本上,您可以在联接中使用任何字符串函数(在ON子句中,它不必是直接列,可以是计算值)。
例如,按照您的建议,您可以使用SUBSTR获取最后四位数字,并在您的联接中使用它:

SELECT * from tableA INNER JOIN tableB on SUBSTR(tableA.num,-4,4) = SUBSTR(tableAB,-4,4)