2010-11-30 11 views
1

制御文字CR & LF(CHAR(10)& CHAR(13))を含むVARCHAR(MAX)列に格納されているデータがあります。部分文字列を計算する際の改行を含む

テキストから部分文字列を抽出するために必要な開始位置と終了位置の番号がいくつかありますが、SUBSTRINGを使用するとこれらの制御文字は無視され、結果として部分文字列が正しく抽出されません。

CRLFのすべてのインスタンスを別の文字(¬)に置き換えた後、部分文字列が正しく機能するCTEを使用してクエリを作成しましたが、表示目的で使用されているので、テキストにCRLFを保持する必要があります。

文字列のどの部分を抽出するのかを計算するときに、制御文字を含むようにSUBSTRING関数を取得する方法は誰も考えられますか?

+0

'SUBSTRING'を使用している使用できないコードを表示できますか? – Gabe

+0

ダム質問 - あなたはすでに別の文字でそれらを置き換えてみましたか?たとえば、Char 10 w /¬とChar 13は何か他のものと一緒にいますか?次に、それらを逆にする方法を知っています。 – Matt

+0

あなたが使用しようとしているオフセットは、SUBSTRINGが間違っているのではなく、CRLFを無視して計算されているとより正確に考えることができます - あなたのSUBSTRINGオフセットと長さ番号はどこから来ていますか? –

答えて

2

substringのSQL Serverバージョンは、CRLFを他の文字と同様に扱います。たとえば:

select substring('123' + char(10) + char(13) + '678',1,3) 
--> 
123 

select substring('123' + char(10) + char(13) + '678',4,2) 
--> 
\r\n 

select substring('123' + char(10) + char(13) + '678',6,3) 
--> 
678 

は再びあなたのコードを確認するか、期待通りsubstringが動作しない場合のより具体的な例を投稿してください。

関連する問題