Sql server 创建一个长度可变的二进制零字符串
如果在运行时(例如在存储过程中)指定了长度,那么创建varbinarymax类型的二进制零字符串的最优雅的方法是什么 我可以使用REPLICATE函数来实现,但这需要大量的转换:Sql server 创建一个长度可变的二进制零字符串,sql-server,sql-server-2008,tsql,Sql Server,Sql Server 2008,Tsql,如果在运行时(例如在存储过程中)指定了长度,那么创建varbinarymax类型的二进制零字符串的最优雅的方法是什么 我可以使用REPLICATE函数来实现,但这需要大量的转换: CAST(REPLICATE(CAST(CAST(0 AS tinyint) AS varbinary(max)), @size) AS varbinary(max)) 它甚至不适合在线路上。。。有更好的方法吗 编辑:代码应该适用于@size>8000。更好还是更短 declare @size int set
CAST(REPLICATE(CAST(CAST(0 AS tinyint) AS varbinary(max)), @size)
AS varbinary(max))
它甚至不适合在线路上。。。有更好的方法吗
编辑:代码应该适用于@size>8000。更好还是更短
declare @size int
set @size = 3
select CAST(REPLICATE(CAST(CAST(0 AS tinyint) AS varbinary(max)), @size) AS varbinary(max)),
cast(replace(space(@size), ' ', 0x0) as varbinary(max))
原形
CAST(REPLICATE(CAST(CAST(0 AS tinyint) AS varbinary(max)), @size)
AS varbinary(max))
仍然最适合我的需要。抱歉,忘了提一个关键要求-空格生成的字符数不会超过8000个…也许可以将表达式包装在函数中以隐藏细节。
CAST(REPLICATE(CAST(CAST(0 AS tinyint) AS varbinary(max)), @size)
AS varbinary(max))