2011-09-14 41 views
0

我的問題是我的波斯語言數據在選擇正確的排序方式時被錯誤地保存爲問號!SQL Server:檢索已保存爲問號字符的數據?

現在我需要這些數據。有沒有辦法檢索這些數據並將其轉換爲波斯語字符?波斯語言字符必須保存爲阿拉伯文或日文等UTF文件。

+1

這取決於你的數據如何混亂。你能展示十六進制轉儲的概念嗎? (例如:'SELECT CAST(column AS VARBINARY(8))') – NullUserException

+0

如果這是生產數據,您是否在推入生產之前測試了插入語句? –

回答

4

如果因爲你做了這樣的事情的數據被保存爲問號:

INSERT dbo.table(col) SELECT 'Persian characters'; 

相反的:

INSERT dbo.table(col) SELECT N'Persian characters'; 
-----------------------------^ this N is crucially important! 

那麼恐怕你的數據已經一去不復返了。但是,如果您在輸出中看到問號,則可能不是這種情況。你在哪裏看到問號?

1

最好的辦法是嘗試連接到這個數據庫,檢索數據並查看存儲的實際字節。如果他們是正確的字節,那麼你可能能夠挽救數據。如果字節全部相同(如果\x53表示問號,則重複字符串\x53),則信息將丟失。

+0

遺憾的問號在表:( 如何在查看這些數據? – Tamoochin

+0

演員(如varbinary列(8))在Python中,你可以做這樣的事情的實際字節:'[十六進制(ORD(C ))在「串」 C]',但像對方回答說,如果它是存儲錯誤,它會消失。:( –

+0

@Tamoochin你是如何驗證「問號是表」?使用什麼工具和什麼查詢? –

相關問題