2017-02-20 125 views
0

我正在查看已將數據項輸入到其中的表(CHAR)(13)。SQL無法刪除CHAR(13)

我能夠認同的行很輕鬆地:

SELECT * 
FROM Preferences 
WHERE PreferenceName LIKE '%' + CHAR(13) + '%' 
從這個

所以我知道在他們的控制字符的線條。但是,當我嘗試刪除這些字符:

UPDATE dbo.Preferences 
SET  PreferenceName = REPLACE(PreferenceName, CHAR(13), '') 
WHERE PreferenceName LIKE '%' + CHAR(13) + '%' 

我得到0行受影響的消息,當然沒有更新。我需要整理這些數據,因爲它會影響過濾。 (我可以選擇一個喜歡但不等於這當然慢很多)

任何想法,爲什麼這不會按預期方式工作?

+2

您是從'tmp.dc_Preferences_bbb'選擇和更新'dbo.Preferences'。這是一個錯誤嗎? – ForguesR

+0

剛剛注意到了我自己。這是一個錯字,多個查詢在一個窗口中,粘貼了錯誤的一個,但其中一個是另一個視圖 –

+0

因此,第一個返回行,但第二個不是?你可以在第一個模式中使用模式嗎? – UnhandledExcepSean

回答

0

我只是做了一個測試

;WITH testdata(ID,s)AS 
    (
     SELECT 1,'This is a string' UNION ALL 
     SELECT 2,'This is the sencode string'+CHAR(13) UNION ALL 
     SELECT 3,'This is the third string'+CHAR(10) UNION 
     SELECT 4,'This is'+CHAR(13)+' a '+CHAR(13)+' string containing special character!'+CHAR(13) 
    ) 
    SELECT *,'After replaced:'+REPLACE(s,CHAR(13),'') AS replaced FROM testdata 
    WHERE CHARINDEX(CHAR(13),s)>0 
 
ID   s             replaced 
----------- -------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
2   This is the sencode string 
         After replaced:This is the sencode string 
4   This is 
a 
string containing special character! 
After replaced:This is a string containing special character!