TSQL:要在现有nvarchar(max)列上使用compress方法吗
我有一个nvarchar(max)类型的现有数据列,我想在将数据存储在此列之前使用compress函数来减小数据的大小。 从技术上讲,它在下面的查询中工作得很好,我知道对于压缩数据,理想情况下应该使用varbinary(max)类型的列,但我只是想了解如果使用现有的nvarchar(max)存储内置压缩函数数据,可能会出现的问题 查询在nvarchar(max)类型下工作正常: 提前谢谢TSQL:要在现有nvarchar(max)列上使用compress方法吗,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个nvarchar(max)类型的现有数据列,我想在将数据存储在此列之前使用compress函数来减小数据的大小。 从技术上讲,它在下面的查询中工作得很好,我知道对于压缩数据,理想情况下应该使用varbinary(max)类型的列,但我只是想了解如果使用现有的nvarchar(max)存储内置压缩函数数据,可能会出现的问题 查询在nvarchar(max)类型下工作正常: 提前谢谢 Abdul你只是问“为什么”你应该使用varbinary而不是mvarchar(MAX)?我认为这是因为压缩
Abdul你只是问“为什么”你应该使用
varbinary
而不是mvarchar(MAX)
?我认为这是因为压缩数据(直到解压)在试图显示时只是“无意义”的数据<代码>压缩专门将数据存储在字节数组中。我想您可以将数据存储为nvarchar
,但最终会得到N'謟'代码>如果您不解压缩就查询数据。谢谢Larnu,是的,在查询中它会像这样出现,但是对于varbinary类型,我们也有同样的问题。我只是想知道,如果我使用现有的nvarchar(max)列来存储内置压缩函数的varbinary数据,是否还有其他问题?就我个人而言,我会使用正确的varbinary(max)类型,因为如果使用nvarchar来存储二进制数据,只会给后续开发人员带来混乱。你只是问“为什么?”您应该使用varbinary
而不是mvarchar(MAX)
?我认为这是因为压缩数据(直到解压)在试图显示时只是“无意义”的数据<代码>压缩
专门将数据存储在字节数组中。我想您可以将数据存储为nvarchar
,但最终会得到N'謟'代码>如果您不解压缩就查询数据。谢谢Larnu,是的,在查询中它会像这样出现,但是对于varbinary类型,我们也有同样的问题。我只是想知道,如果我使用现有的nvarchar(max)列来存储内置压缩函数的varbinary数据,是否还有其他问题?就我个人而言,我会使用正确的varbinary(max)类型,因为如果使用nvarchar来存储二进制数据,只会给后续开发人员带来混乱。
create table test (
name nvarchar(MAX)
)
insert into test ( name) values (COMPRESS(cast('hello how are you im fine thanks' as nvarchar(max))))
select cast(DECOMPRESS(cast(name as varbinary(max))) as nvarchar(max)) as name from test