Ситуация:
Я пытаюсь присоединить таблицу с идентификаторами к другой таблице с идентификаторами и столбцом, который хранится в значении base64.Я расшифровал его и использовал функции JSON
для извлечения значения из ключа 'a' строки JSON
.Я получил известное сообщение об ошибке:
Текст JSON неправильно отформатирован.Неожиданный символ '(' находится в позиции 1.
После просмотра похожих ошибок в Интернете я добавил ISJSON() > 0
, так как он должен исключить сообщение об ошибке - но это не так.
SELECT
u.ids,
base2.ExtractedValue
FROM #ids AS u
INNER JOIN (
SELECT base.Ids, JSON_VALUE(base.Base64Decoded, '$.a') as ExtractedValue
FROM (
SELECT
ids,
convert(
varchar(MAX),
CAST('' AS xml).value('xs:base64Binary(sql:column("value"))', 'VARBINARY(MAX)')
) AS Base64Decoded
FROM base64info
) AS base
WHERE ISJSON(base.Base64Decoded) > 0
AND base.Base64Decoded is not null
) AS base2 ON u.ids=base2.ids
WHERE base2.ExtractedValue IS NOT NULL
Что он делает не так?