T-Sql

更新和 Varbinary(Max)

  • October 2, 2021

我想將序列的值從第 1 行設置到第 2 行。

在此處輸入圖像描述

如果我執行:

Update [dbo].[TS_TaskSequence] 
set [Sequence] = 'the value of sequence' 
Where [TS_ID] = '16777234'

我得到:

不允許從數據類型 varchar 到 varbinary(max) 的隱式轉換。使用 CONVERT 函式執行此查詢。

在此處輸入圖像描述

如何正確轉換它?

您需要CAST()( CONVERT()) 查詢中的硬編碼值作為 a VARBINARY(MAX),因為預設情況下,查詢中單引號中的值本身被視為VARCHAR數據類型。

您還可以使用以下CROSS JOIN查詢(無需對值進行硬編碼)來完全消除轉換任何內容的需要,因為查詢中的源和目標欄位都已經是 type VARBINARY(MAX)

UPDATE TS2
SET TS2.Sequence = TS1.Sequence
FROM dbo.TS_TaskSequence AS TS1
CROSS JOIN dbo.TS_TaskSequence AS TS2
WHERE TS1.TS_ID = '16777230'
   AND TS2.TS_ID = '16777234'

引用自:https://dba.stackexchange.com/questions/300449