2017-04-18 9 views
0

TSQLの文字列の不可視のユニコード制御文字を検索して置換しようとしています。 control characterは「LSEP」または0x2028です。TSQLの不可視のユニコード制御文字を置換する

私はこれらの2つのクエリのいずれかを使用して簡単に十分な文字を見つけることができます:私はそれを試して交換に来たときただし、以下は単にない

SELECT * FROM Email WHERE Html LIKE '%[0x2028]%' 

または

SELECT * FROM Email WHERE CHARINDEX(NCHAR(0x2028) COLLATE Latin1_General_BIN2, Html) > 0 

を仕事:

UPDATE Email 
SET Html = REPLACE(Html, NCHAR(0x2028) COLLATE Latin1_General_BIN2, '') 
WHERE Html LIKE '%[0x2028]%' 

私は間違っています。 N'LSEP'を使ってキャラクター自体を使用することはできません。なぜなら、試して貼り付けたときにスクリプト内に改行としてしか現れないからです。

サンプル入力、要求通り:

</span><span>
</span><span> 
+0

は、あなたがサンプル入力を提供することはできますか? –

+0

あなたの状況を再現できないか、CHARINDEX文が機能するための照合文も必要ありません。このフィドルはあなたが働いていることを示しています(replace文の後に出力の長さが変化することに注意してください)。http: //dbfiddle.uk/?rdbms=sqlserver_2014&fiddle=c7798b96000c893dd4f6b7b8e5bbe013 – Bridge

+0

質問に続きます - あなたはこれが列の制御文字であることをどのように証明しましたか? – Bridge

答えて

1

はこれを試してみてください(それはユニコードSPACE文字とユニコードLSEPを置き換え)...

UPDATE Email 
SET Html = REPLACE(Html, NCHAR(0x2028), NCHAR(0x0020)) 
WHERE Html LIKE '%[0x2028]%' 
関連する問題