2015-04-23 43 views
2

我有一個表cSc_RoleRoleSettingsRoleSettings是數據類型圖像。 內容是這樣的:0x504B030414000000080000000000E637CA2A4在SQL更新數據類型圖像表

現在我需要更新此列的一行。 像這樣:

UPDATE cSc_Role 
SET RoleSettings = '0x343240000000000E637CA2A430500' 
WHERE Naming = 'User X' 

但隨着二進制數據,好像這是不可能用繩子做。 另一種選擇是,我可以在一個臨時的.bak文件中提供圖像。 然後做一個INSERT INTO。 但我用這個解決方案閱讀它只能插入一個完整的行而不只是一列。或者我可以只插入一列插入?

如何在表格中更新或插入一個圖像列? 在此先感謝。

回答

1

嘗試使用轉換爲VARBINARY:

UPDATE cSc_Role 
SET RoleSettings = convert(VARBINARY(MAX),'0x343240000000000E637CA2A430500') 
WHERE Naming = 'User X' 
+0

這工作(你只是錯過了在轉換e)。它將給定的字符串轉換爲十六進制。所以,我想將其複製到RoleSettings中的內容是來自另一個數據庫的內容,我將內容複製到文本文件中。所以,我認爲首先我需要將此內容轉換爲十進制,然後將其轉換爲十六進制的更新? – user1673665

+0

@ user1673665我不確定,但也許你是對的。嘗試一下,你會知道:) – Parado

0

使用十六進制文字,x'34 ....」

UPDATE cSc_Role 
SET RoleSettings = x'343240000000000E637CA2A430500' 
WHERE Naming = 'User X' 
+0

謝謝你的回答。但是當我嘗試這個時,我得到錯誤的語法錯誤。我把字母x放在'之前,並且在開頭刪除了0x。 – user1673665

+0

你正在使用哪個dbms? (我的答案是ANSI SQL兼容...) – jarlh

+0

MS SQL Server管理工作室2008 R2 – user1673665

1

如果以上所有的解決方案沒有工作,然後嘗試更新如下面通過去除以下''

UPDATE cSc_Role 
SET RoleSettings = 0x343240000000000E637CA2A430500 
WHERE Naming = 'User X' 

此外,應避免使用這些數據類型(ntext,文本和圖像),並計劃修改當前正在使用它們的應用程序。改爲使用nvarchar(max),varchar(max)和varbinary(max)

0

我在項目上有同樣的問題,你需要提供二進制數據作爲十六進制值,而不是字符串。這個工具可以讓你更新或插入你需要

Binary-file-to-sql-hexstring

它救了我很多的工時。