十六进制到 ASCII 字符串的即时转换
Hex to ASCII string conversion on the fly
我想知道是否有可能读取包含十六进制值的 table 的记录,并在显示/使用它们作为结果之前将它们即时转换为字符串数据类型(例如在示例图片上,原始数据显示在左侧,程序如何解释它在右侧)。
数据取自 MS Dynamics NAV v5 (SP1) ERP 软件...
此外,我想知道是否有可能设置一个条件(例如 where),可以将其键入为字符串(例如 where something like 'OS%') 并且 DBMS 可以将其转换为十六进制并在 table 中搜索它以缩小查询的最终结果。
提前感谢大家的宝贵时间。
根据你的信息,这个专栏来自Microsoft Dynamics NAV,听起来很清楚。
MSDN documentation 是这样说的:
Specifies the record that the link is attached to.
The following syntax is used:
<table name>: <primary key1>, <primary key2>, <primary key3>
我很确定,Microsoft 有一个针对此值的组合架构,这有点奇怪,但我认为 fiddle 并不难。
如果将值拆分为 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))
这应该会给您一个有效的 table 名称。希望。 ;-)
我这边没法检查,因为我还没有安装那些系统。如果是这样,我可以在此结果中添加一个简短的命令来为您自动拆分。
您的其他字符串可以这样拆分:
--0x1E150000008B000000000089FF534F3030303133353532000087102700000000
SELECT convert(int,0x1E150000008B000000000089FF) -- 35327 (object_id)
SELECT convert(varchar(100),0x534F30303031333535320000) -- SO00013552
SELECT convert(int,0x87102700000000) -- 0
我想,你需要动态解析它。你应该检查 basetable (第一部分)。之后,检查主键的顺序。检查完后,您可以将它们动态解析为目标格式。唯一可能有点困难的是拆分的部分。通常第一部分应该持续到 FF
。之后每个部分可以被多个零分割。
我想知道是否有可能读取包含十六进制值的 table 的记录,并在显示/使用它们作为结果之前将它们即时转换为字符串数据类型(例如在示例图片上,原始数据显示在左侧,程序如何解释它在右侧)。
数据取自 MS Dynamics NAV v5 (SP1) ERP 软件...
此外,我想知道是否有可能设置一个条件(例如 where),可以将其键入为字符串(例如 where something like 'OS%') 并且 DBMS 可以将其转换为十六进制并在 table 中搜索它以缩小查询的最终结果。
提前感谢大家的宝贵时间。
根据你的信息,这个专栏来自Microsoft Dynamics NAV,听起来很清楚。
MSDN documentation 是这样说的:
Specifies the record that the link is attached to.
The following syntax is used:
<table name>: <primary key1>, <primary key2>, <primary key3>
我很确定,Microsoft 有一个针对此值的组合架构,这有点奇怪,但我认为 fiddle 并不难。
如果将值拆分为 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))
这应该会给您一个有效的 table 名称。希望。 ;-)
我这边没法检查,因为我还没有安装那些系统。如果是这样,我可以在此结果中添加一个简短的命令来为您自动拆分。
您的其他字符串可以这样拆分:
--0x1E150000008B000000000089FF534F3030303133353532000087102700000000
SELECT convert(int,0x1E150000008B000000000089FF) -- 35327 (object_id)
SELECT convert(varchar(100),0x534F30303031333535320000) -- SO00013552
SELECT convert(int,0x87102700000000) -- 0
我想,你需要动态解析它。你应该检查 basetable (第一部分)。之后,检查主键的顺序。检查完后,您可以将它们动态解析为目标格式。唯一可能有点困难的是拆分的部分。通常第一部分应该持续到 FF
。之后每个部分可以被多个零分割。