我在培訓視頻中看到了以下語法,我想知道這叫什么以及我們可以在變數上使用哪些方法?
DECLARE @text VARCHAR(max);
SET @text = REPLICATE(CAST('asdfasdf' as varchar(max)),8000);
SET @text.write('zzzzzzzz',0,8);
SELECT @text
存盤在變數中的值是 'zzzzzzzzasdfasdf...'
uj5u.com熱心網友回復:
update.write語法并不是真正的方法。它是一種用于更新大型資料型別(如 nvarchar(max))的 TSQL 語法。
官方UPDATE 檔案描述了如何使用 .WRITE。
SET
{ column_name = { expression | DEFAULT | NULL }
| { udt_column_name.{ { property_name = expression
| field_name = expression }
| method_name ( argument [ ,...n ] )
}
}
| column_name { .WRITE ( expression , @Offset , @Length ) }
.WRITE (expression,@Offset,@Length) 指定要修改 column_name 值的一部分。運算式替換從 column_name 的 @Offset 開始的 @Length 單位。此子句只能指定 varchar(max)、nvarchar(max) 或 varbinary(max) 列。column_name 不能為 NULL,并且不能用表名或表別名限定。
運算式是復制到 column_name 的值。運算式必須計算為或能夠隱式轉換為 column_name 型別。如果 expression 設定為 NULL,則忽略 @Length,并且 column_name 中的值在指定的 @Offset 處被截斷。
@Offset 是存盤在 column_name 中的值中寫入運算式的起點。@Offset 是從零開始的序數位元組位置,是 bigint,不能為負數。如果@Offset 為NULL,則更新操作將運算式附加到現有column_name 值的末尾并忽略@Length。如果 @Offset 大于 column_name 值的位元組長度,則資料庫引擎將回傳錯誤。如果@Offset 加上@Length 超出列中基礎值的結尾,則洗掉將一直持續到該值的最后一個字符。
@Length 是列中部分的長度,從@Offset 開始,被運算式替換。@Length 是 bigint,不能為負數。如果@Length 為NULL,則更新操作會洗掉從@Offset 到column_name 值末尾的所有資料。
另請參閱更新大資料型別和為更新大資料型別提供的示例。
uj5u.com熱心網友回復:
這不是一種方法,盡管看起來確實如此。與可以在 SELECT 中使用的XML 方法不同,這是一個 mutator。它可用于指定長度的 (n)varchar 和 varbinary 資料型別max,并用于有效地修改存盤的值。
那里沒有太多關于它們的資訊,我只找到了這篇博文。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/483422.html
上一篇:使用Sql填充缺失的宿舍
