【发布时间】:2021-12-14 07:17:50
【问题描述】:
这是解压缩 BLOB 文件的 code 的一部分(从 varbinary 列中删除前 4 个二进制数):
在 C# 中:
Stream bStream = sqlBytes.Stream;
byte[] bytes = new byte[bStream.Length];
Encoding Rus = Encoding.GetEncoding("windows-1251");
byte[] bytesOffset = new byte[bytes.Length - 4];
Buffer.BlockCopy(bytes, 4, bytesOffset, 0, bytes.Length - 4);
MemoryStream inStream = new MemoryStream(bytesOffset);
DeflateStream decompressionStream = new DeflateStream(inStream, CompressionMode.Decompress);
MemoryStream outStream = new MemoryStream();
decompressionStream.CopyTo(outStream);
str = Rus.GetString(outStream.ToArray());
如何在 T-SQL (SQL Server) 中复制它?
DECLARE @OneByte binary(1)
WHILE @current_pos <= DATALENGTH(@sqlBinary)
BEGIN
IF @current_pos > 4
BEGIN
SET @OneByte = SUBSTRING(@sqlBinary, @current_pos, 1);
SET @current_pos = @current_pos + 1;
END
RETURN CONVERT(varchar(max), CONVERT(varbinary(max), @sqlBinary))
【问题讨论】:
-
我可以问你为什么要使用一种不是为这些事情而构建的语言吗?
-
即使我不是系统管理员也能使用这个功能。我只是 dbowner,所以我无法安装 dll。
-
你能举个例子吗?您希望 0x6700 变成 0x0700 是否正确?
-
0x6700 转换后为“g”
标签: c# sql sql-server tsql blob