gpt4 book ai didi

c# - 参数数据类型 varchar(max) 对于 Decompress 函数的参数 1 无效

转载 作者:行者123 更新时间:2023-11-30 16:45:04 25 4
gpt4 key购买 nike

我将我的字符串值作为 GZIP 保存到 SQL Server 2016 VARCHAR(max) 列中。

将字符串转换为GZIP 格式是使用C# 完成的。

示例值

This is my trial string

产生的GZIP值

FwAAAB+LCAAAAAAABAALycgsVgCi3EqFkqLMxByFYiCVlw4AJnX75BcAAAA=

是否可以选择从 SQL Server 解压缩的值?

或者我必须将它解压缩到我的 C# 应用程序中吗?

我尝试了以下功能,但它失败了。也尝试作为 NVARCHAR(max)

enter image description here

我使用的gzip函数

public static string GZip_String(string text)
{
using (var memoryStream = new MemoryStream())
{
byte[] buffer = Encoding.UTF8.GetBytes(text);
using (var gZipStream = new GZipStream(memoryStream, System.IO.Compression.CompressionMode.Compress, true))
{
gZipStream.Write(buffer, 0, buffer.Length);
}

memoryStream.Position = 0;

var compressedData = new byte[memoryStream.Length];
memoryStream.Read(compressedData, 0, compressedData.Length);


var gZipBuffer = new byte[compressedData.Length + 4];
Buffer.BlockCopy(compressedData, 0, gZipBuffer, 4, compressedData.Length);
Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gZipBuffer, 0, 4);
return Convert.ToBase64String(gZipBuffer);
}
}

最佳答案

Decompress 函数适用于二进制数据,因此您可以尝试将字节存储在 varbinary 字段中。以下是它在纯 SQL 中的工作方式(尚未在 C# 中尝试过):

CREATE TABLE #tmp
(
F1 varchar(100)
, F2 varbinary(MAX)
);

INSERT INTO #tmp
(
F1
, F2
)
VALUES
('Hey there.' -- F1 - varchar(100)
, COMPRESS('Hey there.') -- F2 - varbinary(max)
);

SELECT F1
, F2
, CAST(DECOMPRESS(F2) AS varchar(100))
FROM #tmp;

关于c# - 参数数据类型 varchar(max) 对于 Decompress 函数的参数 1 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42833148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com