Преобразование двоичного кода в INT в SQL Server - PullRequest
0 голосов
/ 29 октября 2018

У меня есть устаревшее приложение 4GL, которое хранит идентификаторы в двоичном виде без какого-либо шифрования. Я пробовал простой CAST AS INT, CAST (SUBSTRING (.., 3,1000) AS INT) и так безрезультатно. Можно ли посоветовать, пожалуйста?

В приведенном ниже примере столбец binary_source представляет собой пример данных из SQL Server, один правильный_результат - результат, представленный в приложении 4GL, а между ними - некоторые из моих попыток преобразования.

WITH binary_to_convert AS
(
SELECT 0x1841506A00000000 AS binary_source,100005 AS correct_result
UNION ALL SELECT 0x1841506A00000000,100005
UNION ALL SELECT 0x1841506A00000000,100005
UNION ALL SELECT 0x1841506A00000000,100005
UNION ALL SELECT 0x1841506A00000000,100005
UNION ALL SELECT 0x1841706A00000000,100007
UNION ALL SELECT 0x1841706A00000000,100007
UNION ALL SELECT 0x1841906A00000000,100009
UNION ALL SELECT 0x1841906A00000000,100009
UNION ALL SELECT 0x1841706A00000000,100007
UNION ALL SELECT 0x1841706A00000000,100007
UNION ALL SELECT 0x1841706A00000000,100007
UNION ALL SELECT 0x1841706A00000000,100007
UNION ALL SELECT 0x1841706A00000000,100007)

SELECT b.binary_source,
        cast(b.binary_source AS INT) AS INT_COLUMN,
  CAST(SUBSTRING(b.binary_source,3,1000) AS VARCHAR(MAX)) AS VARCHAR_COLUMN,
  CAST(SUBSTRING(b.binary_source,3,1000) AS INT) AS INT_CAST_COLUMN,
        b.correct_result
 FROM binary_to_convert b
...