微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在SQL Server中正确修剪二进制数据

如何解决在SQL Server中正确修剪二进制数据

试试这个,works on sql-Server 2008.这是Sql Fiddle

请注意,我假设原始字符串中未包含Char(0),因为即使从原始字符串中也可以简单地替换它。

-- I would like to change the following line so it trims trailing null chars
SET @string = CONVERT(VARCHAR(128), @binary)
SET @string = REPLACE(@string, Char(0),'')

解决方法

设想:

我正在将字符串插入二进制字段(CONTEXT_INFO),然后稍后尝试将其拉出并将其转换回字符串。当我这样做时,结果字符串的长度为128,因为它具有结尾的空字符。

例子:

DECLARE @string VARCHAR(128)
DECLARE @binary VARBINARY(128)

SET @string = 'abcdefg'
SET @binary = CONVERT(VARBINARY(128),@string) --0x61626364656667000000...
SET CONTEXT_INFO @binary
SET @binary = CONTEXT_INFO()

-- I would like to change the following line so it trims trailing null chars
SET @string = CONVERT(VARCHAR(128),@binary)

SELECT
    @binary AS [binary],DATALENGTH(@binary) AS [binary.Length],--128 as expected
    @string AS [string],DATALENGTH(@string) AS [string.Length] --This is 128,but I need it to be 7

问题:

将二进制字段转换为字符串时,如何修剪尾随的空字符?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。