将varbinary(max)列截断为指定的长度

时间:2013-02-22 14:55:37

标签: sql-server-2008 tsql sql-server-2008-r2

我知道我可以使用

UPDATE table SET column = .WRITE (expression, @offset, @length)

idiom部分更新varbinary(max)类型的列。但是,我找不到有关如何设置现有BLOB长度的文档(即如何截断它)。

狂野猜测:.WRITE (NULL, @offset, 0) - 但是,即使这样有效,这是否记录在案?

编辑:请注意,我对选择部分数据不感兴趣 - 我需要设置BLOB的长度,以便下一个SELECT将返回截断的数据

2 个答案:

答案 0 :(得分:1)

经过一番细致的阅读后,我在docs

中找到了这段话
  

如果表达式设置为NULL,则会忽略@Lengthcolumn_name中的值会在指定的@Offset被截断。< / p>

狂野猜测似乎是正确的。

答案 1 :(得分:0)

这在2008 R2中对我有用:

update MyTable set MyColumn = cast(left(MyColumn, 100000000) as varbinary(max))

二进制数据和大数字的使用似乎与documentation一致。

如果找到它们,我会更新更快的方法。