2017-04-18 18 views
0

我試圖搜索並替換TSQL中字符串中的隱形unicode控制字符。 control character是'LSEP'或0x2028替換TSQL中的隱形unicode控制字符

我可以很容易地找到字符足夠使用這兩種查詢:

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語句的collat​​e語句來工作 - 這個小提琴顯示你的工作(注意替換語句後輸出長度改變):http: //dbfiddle.uk/?rdbms=sqlserver_2014&fiddle=c7798b96000c893dd4f6b7b8e5bbe013 – Bridge

+0

請注意問題 - 您是如何確定這是列中的控制字符的? – Bridge

回答

1

試試這個(它取代了統一LSEP都符合Unicode字符SPACE)...

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