Можно ли вставить обычный текст в varbinary (max)?
Да , просто будьте уверены в том, что вы храните, чтобы вы знали, как его вернуть. Это может пролить некоторый свет на это:
-- setup test table
declare @test table (
data varbinary(max) not null,
datatype varchar(10) not null
)
-- insert varchar
insert into @test (data, datatype) select cast('asdf' as varbinary(max)), 'varchar'
-- insert nvarchar
insert into @test (data, datatype) select cast(N'asdf' as varbinary(max)), 'nvarchar'
-- see the results
select data, datatype from @test
select cast(data as varchar(max)) as data_to_varchar, datatype from @test
select cast(data as nvarchar(max)) as data_to_nvarchar, datatype from @test
UPDATE:
Все это предполагает, конечно, что вы не хотите использовать выразительную мощь родного типа данных SQL Server. Тип данных XML также, по-видимому, достаточно эффективно хранит свое содержимое. В своей базе данных я регулярно вижу, что это всего лишь половина размера равной строки varchar, в соответствии с длиной данных (). Это может быть не так уж и научно, и, конечно же, YMMV.