【问题标题】:Converting Phone Number Format to 'XXX-XXX-XXXX'将电话号码格式转换为“XXX-XXX-XXXX”
【发布时间】:2013-03-19 13:59:34
【问题描述】:

我在 Teradata 中编写了一些代码,用于连接 2 个单独的表:

SELECT
A.*,
B.MTN_1

FROM
TABLE_1 AS A

JOIN
TABLE_2 AS B
ON A.ACCT_NUM=B.ACCT_NUM

WHERE A.MTN=B.MTN_1

唯一的问题是,MTN_1 是999-999-9999 (VARCHAR) 格式。 MTN 采用9999999999 (Character Fixed) 格式。如何更改字符固定格式以匹配 999-999-9999 格式,以便在连接条件中使用列?

【问题讨论】:

  • 不要忘记,对于世界上大多数人来说,“XXX-XXX-XXXX”看起来一点也不像电话号码。如果您真的只关心北美,您可能想更改您的问题以删除任何提及电话号码的内容,而只讨论字符串格式。 (本地化电话号码格式并不简单,仅供参考。)

标签: sql syntax teradata


【解决方案1】:

带替换功能:

SELECT A.*, B.MTN_1
FROM TABLE_1 AS A
JOIN TABLE_2 AS B ON A.ACCT_NUM=B.ACCT_NUM
WHERE A.MTN=REPLACE(B.MTN_1,"-","")

使用没有替换功能的 Teradata 时,可以使用 substr 和连接运算符:

SELECT A.*, B.MTN_1
FROM TABLE_1 AS A
JOIN TABLE_2 AS B ON A.ACCT_NUM=B.ACCT_NUM
WHERE A.MTN=SUBSTR(B.MTN_1,1,3) || SUBSTR(B.MTN_1,5,3) || SUBSTR(B.MTN_1,9,4)

【讨论】:

  • 我正在使用 Teradata...它似乎在寻找“REPLACE”之前的内容
  • 这允许您通过为 A.MTN 和 B.MTN_1 提供相同的格式来匹配它们。您的问题是 MTN_1 中有破折号,而 MTN 中没有破折号,因此替换功能将它们删除,实际上在比较时,将 XXX-XXX-XXXX 变为 XXXXXXXXXX。
  • 哦,好吧。兆数据。没有替换功能……我再看看。
  • 谢谢!我回家后会测试一下。
猜你喜欢
  • 2017-10-25
  • 2016-06-04
  • 1970-01-01
  • 1970-01-01
  • 2021-01-01
  • 2014-03-01
  • 2011-09-02
  • 1970-01-01
  • 2016-12-24
相关资源
最近更新 更多