动态十六进制到ASCII字符串转换

时间:2016-07-10 19:22:37

标签: sql-server dynamics-crm

我很想知道是否有可能读取包含十六进制值的表的记录,并在显示/使用它们作为结果之前将它们即时转换为字符串数据类型(如示例图片所示,其中原始数据显示在左侧以及程序如何在右侧部分解释它。

从MS Dynamics NAV v5(SP1)ERP软件中获取的数据......

SAMPLE SCREENSHOT

此外,我想知道是否有可能设置一个条件(例如在哪里)可以键入一个字符串(例如某些东西喜欢' OS%&# 39;)和DBMS可以将其转换为十六进制并在表中搜索它以缩小查询的最终结果。

提前感谢您的所有时间。

1 个答案:

答案 0 :(得分:1)

根据您的信息,此列来自Microsoft Dynamics NAV,听起来非常清楚。

MSDN documentation说:

  

指定链接所附加的记录。

     

使用以下语法:

     

<table name>: <primary key1>, <primary key2>, <primary key3>

我很确定,微软有这个价值的组合架构,这有点奇怪,但我认为并不难以摆弄。

如果您将值分割为FF,则可以看到两个结果:

--0xB6A1E6050089FF4252412D4D3032000000
select convert(int,0xB6A1E6050089FF) -- Object_ID for the specified table
select convert(varchar(100),0x4252412D4D3032000000) -- Primary Key 1

您可以尝试进一步执行此操作并在您的计算机上执行此操作:

select object_name(convert(int,0xB6A1E6050089FF))

这应该为您提供有效的表名。希望。 ; - )

我无法检查这一点,因为我没有安装这些系统。如果是这样,我可以在此结果中添加一个简短命令,以自动为您分割。

您的其他字符串可以像这样拆分:

--0x1E150000008B000000000089FF534F3030303133353532000087102700000000
SELECT convert(int,0x1E150000008B000000000089FF) -- 35327 (object_id)
SELECT convert(varchar(100),0x534F30303031333535320000) -- SO00013552
SELECT convert(int,0x87102700000000) -- 0

我认为,你需要动态解析它。您应该检查基准表(第一部分)。之后,检查其订购中的主键。检查完毕后,您可以动态地将它们解析为目标格式。唯一可能有点困难的是分裂的一部分。通常第一部分应该到FF。之后,每个部分可以被多个零分割。