Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 创建一个长度可变的二进制零字符串_Sql Server_Sql Server 2008_Tsql - Fatal编程技术网

Sql server 创建一个长度可变的二进制零字符串

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

如果在运行时(例如在存储过程中)指定了长度,那么创建varbinarymax类型的二进制零字符串的最优雅的方法是什么

我可以使用REPLICATE函数来实现,但这需要大量的转换:

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))