如何将二进制转换为原始格式的字符串?

2020-09-20 22:19发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


亲爱的

请帮助如何将二进制对象转换为原始格式的字符串。 例如

创建表#t1(一个varbinary);

插入#t1值(0x6861);

创建表#t2(str varchar(100));

----------------------------------------------- ------

然后我发现是否可以跑-

插入#t2从#t1选择convert(varchar(100),a);

插入的是" ha",而不是" 0x6861"

我也尝试了强制转换(a作为varchar(100))..但仍然'ha'不是'0x6861'...

然后甚至从#t1中选择''|| a-也会导致'ha'...

请帮助我。 非常感谢

致谢

艾森

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


亲爱的

请帮助如何将二进制对象转换为原始格式的字符串。 例如

创建表#t1(一个varbinary);

插入#t1值(0x6861);

创建表#t2(str varchar(100));

----------------------------------------------- ------

然后我发现是否可以跑-

插入#t2从#t1选择convert(varchar(100),a);

插入的是" ha",而不是" 0x6861"

我也尝试了强制转换(a作为varchar(100))..但仍然'ha'不是'0x6861'...

然后甚至从#t1中选择''|| a-也会导致'ha'...

请帮助我。 非常感谢

致谢

艾森

付费偷看设置
发送
3条回答
SAP浪
1楼 · 2020-09-20 22:43.采纳回答

这是一个有趣的问题,因为0x6861的"原始格式"不是字符串" 0x6861"。 这是十六进制的数值。 获得该值的字符串表示形式并不像看起来那么简单。 我发现的唯一方法是利用许多SAP IQ功能的输出是字符串这一事实,因此以下代码实际上有效:

从#t1中选择inttohex(hextoint(a));

它以字符串形式返回:

0000000000006861

我们需要删除那些前导零。 SAP IQ的LTRIM函数不将字符串作为参数(它仅修剪前导空格),因此我们必须尝试另一种方法。 让我们将其转换为INT:

从#t1中选择cast(inttohex(hextoint(a))int);

这将返回:

6,861

因此,让我们将其转换回字符串并添加十六进制前导" 0x":

从#t1中选择'0x'|| cas​​t(inttohex(hextoint(a))int);

这将返回:

0x6861(作为字符串,而不是十六进制值)

当||时,我利用整数自动转换为字符串的优势 使用了运算符,但是如果需要,您可以明确地做到这一点:

从#t1选择'0x'|| cas​​t(cast(int(hextoint(a))int)作为char(10));

这将返回相同的答案。

有帮助吗?

-柯比

落灬小鱼
2楼-- · 2020-09-20 22:56

但是还有另一个问题-如果字符串很长-使得" int"无法容纳该字符串对象,那么我们该如何处理呢?

谢谢

小熊yu生菜
3楼-- · 2020-09-20 22:37

亲爱的柯比,

非常感谢! 您的转换技巧真是太神奇了!

问候

艾森

一周热门 更多>