我需要在具有不同格式的电话号码的字段上的两个表上进行oracle SQL连接。一个表上的字段格式为555-555-5555,另一个表格(555)555-5555。
可以使这项工作的语法是什么?表格足够小我可以通过删除区号来获得,只关注最后4位数。
有可能吗?如果我不能进行连接,我会对简单比较的语法感到好奇,例如:where last4(phonenumber)='4567'
答案 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)