0

varbinary(max)長さが実行時に指定されている場合 (たとえば、ストアド プロシージャで)、タイプ のバイナリ ゼロの文字列を作成する最も洗練された方法は何ですか?

関数を使用してそれを行うこともできますREPLICATEが、これには多くのキャストが含まれます。

CAST(REPLICATE(CAST(CAST(0 AS tinyint) AS varbinary(max)), @size)
    AS varbinary(max))

(線に収まりません...) これを行うより良い方法はありますか?

編集: コードは動作するはずです@size > 8000

4

3 に答える 3

0
; with Foo as (
  select 1 as Size
  union all
  select Size * 2
    from Foo
    where Size < 65536 )
  select Size, Cast( Replicate( Char( 0 ), Size ) as VarBinary(MAX) ) as WideZero
    from Foo
    option ( maxrecursion 0 )
于 2013-02-23T01:57:25.863 に答える
0

良いですか、それとも短いですか?:)

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))
于 2013-02-23T00:14:08.513 に答える