有沒有辦法確定哪些記錄是SQL Server 2008中的雙字節字符?SQL Server 2008搜索雙字節字符
例如,如果國家/地區填寫空白,我想查詢中文,韓文和日文中的所有記錄,我該怎麼辦?
您的意見非常感謝。
我想我可能會困惑你們。一切都存儲在nvarchar中。一些記錄是中文的,一些是韓文的,一些是西班牙文的,還有更多。我們想找出中國,日本和韓國的記錄來做一些事情。那有意義嗎?
有沒有辦法確定哪些記錄是SQL Server 2008中的雙字節字符?SQL Server 2008搜索雙字節字符
例如,如果國家/地區填寫空白,我想查詢中文,韓文和日文中的所有記錄,我該怎麼辦?
您的意見非常感謝。
我想我可能會困惑你們。一切都存儲在nvarchar中。一些記錄是中文的,一些是韓文的,一些是西班牙文的,還有更多。我們想找出中國,日本和韓國的記錄來做一些事情。那有意義嗎?
有沒有辦法知道哪些記錄是在SQL Server 2008雙字節字符?
您可以使用此 - 如果雙字節字符不能被減少爲單個字節,那麼你在記錄有CJK:
select * from tbl
where convert(nvarchar(max),convert(varchar(max),somecolumn)) != somecolumn
看來你的方法有效。我會檢查更多。非常感謝。 – Percy 2011-02-28 19:41:02
如果我理解你的話,那可能是因爲這樣一個存儲過程一樣簡單:
DECLARE @SearchString nvarchar(MAX)
...
SELECT * FROM MyTable
WHERE Country = '' and SearchField = @SearchString
這假定SearchField是nvarchar
。
如果您有一個nvarchar列,那麼其中的所有信息都將是雙字節。
如果你正在努力尋找那些類型爲nvarchar的所有列,那麼你可以使用下面的查詢:
SELECT OBJECT_NAME(col.OBJECT_ID) as [TableName], col.[name] as [ColName], typ.[name]
FROM sys.all_columns col
INNER JOIN sys.types typ
ON col.user_type_id = typ.user_type_id
WHERE col.user_type_id = 231
如果'records'你的意思'rows'然後對於'nvarchar()'列,您將在** all **行中具有雙字節字符。 「Hello」和「你好」都以雙字節字符存儲。 – 2011-02-28 18:46:34
您是否問過用於日本漢字和其他主要亞洲語言的舊式'雙字節字符集'(DBCS),還是MS使用Unicode('國家文本')? – DaveE 2011-02-28 19:22:00