点击此处---> 群内免费提供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'...
请帮助我。 非常感谢
致谢
艾森
这是一个有趣的问题,因为0x6861的"原始格式"不是字符串" 0x6861"。 这是十六进制的数值。 获得该值的字符串表示形式并不像看起来那么简单。 我发现的唯一方法是利用许多SAP IQ功能的输出是字符串这一事实,因此以下代码实际上有效:
从#t1中选择inttohex(hextoint(a));
它以字符串形式返回:
0000000000006861
我们需要删除那些前导零。 SAP IQ的LTRIM函数不将字符串作为参数(它仅修剪前导空格),因此我们必须尝试另一种方法。 让我们将其转换为INT:
从#t1中选择cast(inttohex(hextoint(a))int);
这将返回:
6,861
因此,让我们将其转换回字符串并添加十六进制前导" 0x":
从#t1中选择'0x'|| cast(inttohex(hextoint(a))int);
这将返回:
0x6861(作为字符串,而不是十六进制值)
当||时,我利用整数自动转换为字符串的优势 使用了运算符,但是如果需要,您可以明确地做到这一点:
从#t1选择'0x'|| cast(cast(int(hextoint(a))int)作为char(10));
这将返回相同的答案。
有帮助吗?
-柯比
但是还有另一个问题-如果字符串很长-使得" int"无法容纳该字符串对象,那么我们该如何处理呢?
谢谢
亲爱的柯比,
非常感谢! 您的转换技巧真是太神奇了!
问候
艾森
一周热门 更多>