如何通过可能有或可能没有已知前缀的列加入和分组两个表?

时间:2014-02-26 13:54:11

标签: sql sql-server

我有两张带有电话号码的表格,这些号码可能有也可能没有+前缀。我必须神奇地加入这两张桌子!

如果我想避免使用嵌套的select子句在必要时将数据与+连接,我有哪些选择?

  • 表A有一个电话字段。数字可能有也可能没有+。
  • 表B有一个电话字段。数字可能有也可能没有+。
  • 有或没有+的数字被视为相同。

1 个答案:

答案 0 :(得分:2)

你可以采取两种方式

  1. REPLACE
    REPLACE(phone,'+','')

  2. 如果数字长度不变 - SUBSTRING
    SUBSTRING(phone, (-1)*@length)

    @length中您的号码长度

  3. 所以,联接看起来像是 A JOIN B ON REPLACE(A.phone,'+','') = REPLACE(B.phone,'+','')
     或
    A JOIN B ON SUBSTRING(A.phone, @length) = SUBSTRING(B.phone, @length)