Sql 删除十六进制列中的填充零

Sql 删除十六进制列中的填充零,sql,tsql,hex,Sql,Tsql,Hex,我有一个TSQL数据库,其中包含十六进制的列。但是,这些值用零填充以填充列 我需要去掉这些零,这样我就有了十六进制字符串。问题是我不能仅仅移除零点对,因为字符串在中间可能有零点。 我有一种感觉,我需要将它转换为十进制,然后再转换回或其他形式,但我尝试的每件事都会产生奇怪的结果 数据库中的列如下所示: 1EBC67E6000000 6B1FE9C7830000 C700DBBF000000 这些值的长度不同,并且都用成对的零填充 任何想法都是好的 也许这对你有好处: Select replac

我有一个TSQL数据库,其中包含十六进制的列。但是,这些值用零填充以填充列

我需要去掉这些零,这样我就有了十六进制字符串。问题是我不能仅仅移除零点对,因为字符串在中间可能有零点。 我有一种感觉,我需要将它转换为十进制,然后再转换回或其他形式,但我尝试的每件事都会产生奇怪的结果

数据库中的列如下所示:

1EBC67E6000000
6B1FE9C7830000
C700DBBF000000
这些值的长度不同,并且都用成对的零填充


任何想法都是好的

也许这对你有好处:

Select  replace(rtrim(replace('C700DBBF000000','0',' ')),' ','0');

也许这对你有好处:

Select  replace(rtrim(replace('C700DBBF000000','0',' ')),' ','0');

最后用零填充十六进制值似乎很奇怪。这会改变值,如果填充在字符串的开头,则值保持不变。比较000111和111000十进制,第二个不等于111。如何确保值不以零结尾?嗯,这很棘手-如果值具有不同的长度,则无法确定它应该是C700DBBF还是C700DBBF0。您是否希望永久删除这些零?如果是,列的数据类型是什么?如果它是二进制的,而不是varbinary,那么它们是用来填充长度的,并且不能被删除。在最后用零填充十六进制值似乎很奇怪。这会改变值,如果填充在字符串的开头,则值保持不变。比较000111和111000十进制,第二个不等于111。如何确保值不以零结尾?嗯,这很棘手-如果值具有不同的长度,则无法确定它应该是C700DBBF还是C700DBBF0。您是否希望永久删除这些零?如果是,列的数据类型是什么?如果它是二进制的,而不是varbinary,那么这些都是用来填充长度的,不能删除。它将删除中间的零。我将0替换为空格“”,最后只删除这个。之后,我将字符串中间的空格再次替换为0。在ManagementStudio或数据库中尝试此代码。这很好。这确实需要您先将varbinary转换为字符串表示,然后返回此处未提供的代码!它将删除middleno中的零,我将0替换为空格“”,并且在结尾仅删除此项。之后,我将字符串中间的空格再次替换为0。在ManagementStudio或数据库中尝试此代码。这很好。这确实需要您先将varbinary转换为字符串表示,然后返回此处未提供的代码!