2017-01-11 6 views
0

私はreplicate( ''、n)で行われた固定長ファイルの書式設定中にこの問題が発生しました。後で私はそれがスペースでないことを確かめるためにアンダースコアに切り替えました。その後、私は戦闘できない1つのフィールドの最後にいくつかのタブがあり、一度メモ帳(任意のタイプ、任意のエンコーディング)やその他のエディタに置かれると、追加の4bが追加されます。私はこのテストコードにこの問題を絞り込み、既定の設定を持つすべてのMSサーバーで試しました。 これでv2をメモ帳に貼り付けると、余分なバイトが追加されました。私はremove 1 bを取り替えるが、そこには何か他のものが残っているのを見て、私もchar(13)+ char(10)を試した。 htmlが何かを食べる場合に備えて、私はv2 = 60を持っています。多くのすべてが です。TSQL:tab(非印字文字)削除、何かが間違っています

DECLARE @vv VARCHAR(1000) = 'Alpha Bravo Charlie_________________________________________ '; 
DECLARE @vv2 VARCHAR(1000) = REPLACE(@vv,CHAR(9),''); 
SELECT @vv v1, LEN(@vv) len1, CHARINDEX(@vv,CHAR(9)) i9, '--' [-->], @vv2 v2, LEN(@vv2) len2 
+0

を取り除くためにUDFが、それが助けハッピー –

答えて

1

それが助け場合は、ここでのデコード/エンコードに制御文字に

CREATE FUNCTION [dbo].[udf-Str-Strip-Control](@S varchar(max)) 
Returns varchar(max) 
Begin 
    ;with cte1(N) As (Select 1 From (Values(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) N(N)), 
      cte2(C) As (Select Top (32) Char(Row_Number() over (Order By (Select NULL))-1) From cte1 a,cte1 b) 
    Select @S = Replace(@S,C,' ') 
    From cte2 

    Return LTrim(RTrim(Replace(Replace(@S,' ',' '),' ',' '))) 
End 
--Select [dbo].[udf-Str-Strip-Control]('Michael'+char(13)+char(10)+'LastName') --Returns: Michael LastName 
+0

Thanskジョンのことがわかりオンラインです –

+0

@MikeSを働いていた、私ははっきりとそれは%09 –

関連する問題