2013-03-28 44 views
0

我有一些代碼,我在Teradata的是連接2個獨立的表中寫道:轉換電話號碼格式爲「XXX-XXX-XXXX」

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格式,以便我可以在我的連接條件中使用列?

+2

不要忘記,世界上大部分的「XXX-XXX-XXXX」看起來都不像電話號碼。如果你真的只關心北美,你可能想改變你的問題,刪除任何電話號碼,只談論字符串格式。 (本地化的電話號碼格式不簡單,僅供參考。) –

回答

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=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) 
+0

等等......這將XXX-XXX-XXXX變成XXXXXXXXXX,對不對? – ciw916

+0

我正在使用Teradata ...它似乎在尋找某種東西來放置「REPLACE」 – ciw916

+0

這使您可以將A.MTN與B.MTN_1進行匹配,方法是給予它們相同的格式。您的問題是MTN_1中存在破折號,MTN中沒有破折號,因此替換函數將其刪除,實際上在比較時,XXX-XXX-XXXX會變爲XXXXXXXXXX。 – m4573r