我正在使用Sql Server 2008 R2 Enterprise。我正在編寫一個能夠從Sql表插入,更新,刪除和選擇記錄的應用程序。當涉及到包含特殊字符(例如ć,č,đ和ž)的記錄時,該應用程序出錯。Sql表中的Unicode字符
這裏發生了什麼:
命令:
INSERT INTO Account (Name, Person)
VALUES ('Boris Borenović', 'True')
WHERE Id = '1'
插入一個新的記錄,但在名稱字段是Boris Borenovic
,所以性格ć
更改爲c
。
命令:
SELECT * FROM Account
WHERE Name = 'Boris Borenović'
返回正確的記錄,如此反覆字符ć
被c
更換並返回該記錄。
問題:
- 是否有可能使SQL Server保存
ć
等特殊字符前面提到的? - 如果解決了上一個問題,是否仍有可能使Sql能夠返回
Boris Borenović
記錄,即使查詢請求的是Boris Borenovic
?
所以,保存記錄時,我希望SQL救到底是什麼給出,但是檢索記錄時,我希望它能夠ingnore的特殊字符。感謝所有的幫助。
謝謝你的回答。我的Sql表中的字段Name是nvarchar(50)類型,所以問題保持不變。 至於整理,我認爲應該解決第二個問題,但是,直到我解決'ć'和其他缺失的字符,我卡住了。我在代碼中檢查了我的Sql命令文本,它看起來很正常(意思是它包含那些討厭的字符)。難道還有其他的東西阻止了這些角色的保存嗎?爲什麼SELECT語句也將'ć'轉換爲'c'(我沒有使用COLLATE)? – Boris 2010-11-10 15:28:50
@Boris - 就像我說的(點2),如果你有字符串文字(如你已經發布的例子),你需要在開頭引號之前加一個「N」,否則字符串會被轉換在進入表格之前轉換成另一種形式。 – 2010-11-10 15:46:29
好吧,我明白了!我應該把這個'N'放在每個字段值的前面嗎? – Boris 2010-11-10 15:58:35