2016-08-10 11 views
1

基本的なクライアント連絡先情報を含む連絡先データを取得しようとしています。問題:アドレス欄に改行があり、私の人生のためにそれらを取り除くものを見つけられません。フィールドから余分なスペース、改行、タブを削除します。

私は以下の両方のクエリのバリエーションを試してみましたが、すべてがExcelに転送されたときに複数の行を取るアドレスと同じ結果を生成します。私はデータの不均等な行、すなわち10のクライアント名で終わっていますが、クライアント名と並んでいない15行のアドレスを挙げています。

例1:

SELECT clientname, contaddress, ContTownCity, ContCounty, contpostcode, Contphone, ContEmail, replace(
     replace(
    replace(
    replace(contAddress, 
     Char (9),''), 
     Char(13),''), 
     char(10),'')    
FROM tblengagement as E  
INNER JOIN tblcontacts as C  
ON e.contindex = c.ContIndex; 

所望の分野の観点から実施例2のクエリ:

select replace(
      replace(
      replace(
       LTrim(RTrim(ContAddress)), 
      ' ',' |'),      
      '| ',''),       
     '|','')        
     AS AddressSingleSpace 
    from salesforce1 

これを照会するより良い方法のアイデアやIが集まりに全体の異なるアプローチを取るべきですこの?

+0

データのサンプルと必要な出力を追加してください。 – gofr1

+1

おそらく複製:http://stackoverflow.com/questions/14211346/how-to-remove-white-space-characters-from-a-string-in-sql-server – vercelli

答えて

1

私はあなただけを確認するためにかかわらず、実行する前に、最初にこれらの文字を含む文字列に列を変更します*

Update Table SET Column = replace(replace(replace(column,Char(13),'',Char(10),''),Char(9),'') 
WHERE Column is Not Null 

データをクリーンアップする必要がありますと言うでしょう。私はテストすることができませんでした

この利点は、データを適切に消去してからselect文で実行する方が良いということです。 ssrsのような他のシステムにエクスポートした場合、あなたのレポートを駄目にすることはありません。


もう1つの考え方は、NULL値を自動入力する日付時刻を格納する列を追加することです。上記のスクリプトを使用する場合は、DateColumnがNULLの場所をフィルタリングし、その列にGetDate()などの日付スタンプを設定することもできます。

これは、データセットの増加に伴って永遠に実行されることはありません。

+0

にCharの後ろに余分な閉じ括弧がありませんでした13)、しかしこれは完璧に働いた。私はちょうどこれをテストし、私のバックアップDBに完璧に働いた。 – Megan

+0

嬉しいことに:D私は午前2時にベッドに座ってはいけないと思う。それらはカッコがありません。私はあなたのPRODシステムのバックアップを作って、それをリッピングさせると言うでしょう – Merenix

関連する問題