2017-12-11 90 views
2

結果セットはSQLであり、電話番号はカンマで区切っています私はすなわち複数の電話番号をSQL Serverで括弧[()]とハイフン( - )でフォーマットする

(123)456-7890 

必要がある電話番号をフォーマットするために今、私は私のSQL列に10個の以上の数字を持っているので、この式は動作しませんので、私はSQLでこのトランザクションを実現することができます任意の方法はありますか?ここに私のSQLの出力です。 enter image description here

Btwこのコードからcomma separated値を取得しています。

SELECT 
EmployeeID, 
Type, 
STUFF(
    (
    SELECT 
     ', ' + PhoneNumber 
    FROM EmpPhone E 
    WHERE E.EmployeeID = T.EmployeeID AND E.Type = T.Type 
    FOR XML PATH(''),TYPE 
    ).value('.','VARCHAR(MAX)' 
    ), 1, 1, '' 
) AS Phones 
INTO #PhoneNumbers 
    FROM EmpPhone AS T 
    GROUP BY EmployeeID, Type 

(919)382-9999,(888)888-8888,(222)-2222 ...... 
+0

あなたのデータを標準化してCSV電話番号を別々のレコードに広めることが、私の強大なアドバイスです。あなたが気にしている書式設定でさえ、標準化されたデータで扱いにくいかもしれません。現在のフォーマットでは、頭痛を抱えています。 –

+0

私は以前、私はSQLの電話番号を書式化していなかったことに同意しました。私はCrystal Reportでこれをやっていましたが、Crystal Reportにコードを書く代わりに、StorProcが非常に短く、ここでこれを実装することでパフォーマンスが低下することはありません。 – Manjuboyz

+0

SQL ServerでCSVを爆発的に検索します。私はそれをかなりうまくカバーしているので、いくつかの質問を思い出すようです。 –

答えて

2

SELECT 
EmployeeID, 
Type, 
STUFF(
    (
    SELECT 
     ', ' + '('+LEFT(PhoneNumber,3)+')'+RIGHT(LEFT(PhoneNumber,6),3)+'-'+RIGHT(PhoneNumber,4) 
    FROM EmpPhone E 
    WHERE E.EmployeeID = T.EmployeeID AND E.Type = T.Type 
    FOR XML PATH(''),TYPE 
    ).value('.','VARCHAR(MAX)' 
    ), 1, 1, '' 
) AS Phones 
INTO #PhoneNumbers 
    FROM EmpPhone AS T 
    GROUP BY EmployeeID, Type 

希望、これはあなたを助け、これを試してみてくださいのようなので、私の質問は、クエリ結果を行うことができます。

+0

ありがとう!チャームのように働いた:)私はこれを修正するためにそこにいたと思ったが、これは本当に私の時間を助けた。 – Manjuboyz

+0

ようこそ。ではごきげんよう...! – DineshDB

関連する問題