2011-05-04 15 views
1

我正在運行SQL Server 2008 R2。有一些記錄在特定列中有這個時髦的字符。我想分離出這些記錄並對它們執行Replace()。我遇到的問題是當我運行此查詢時:Sql Server:分離特定字符

select * from stories where body like '%�%' and publishdate = 20110131 

它將返回stories不在正文欄中的故事。在我檢查過的每個案例中,都有一個正常的?字體在主體列的內容中。所以看起來像'% %'是匹配嗎?和 。是否有任何演員或轉換魔法我可以做,以返回實際上有 字符的記錄?

回答

1

N前綴和二進制COLLATE子句是否可以完成這項工作?

CREATE TABLE #stories 
(
body nvarchar(100) 
) 

INSERT INTO #stories 
SELECT N'normal ? char' UNION ALL SELECT N'funky � char' 

SELECT * 
FROM #stories 
WHERE body like '%�%' 

SELECT * 
FROM #stories 
WHERE body like N'%�%' COLLATE Latin1_General_BIN2 

DROP TABLE #stories 
+0

完美。它看起來像這個更新語句將完成這項工作:update #stories set body = Replace(body,N' 'COLLATELatin1_General_BIN2,'')類似於N'% %'的身體COLLATE Latin1_General_BIN2 – Dzejms 2011-05-04 15:22:34