Как извлечь строку между двумя символами - PullRequest
0 голосов
/ 01 мая 2019

Положение:

У меня есть столбец, декодированный из Hex в varchar, где значения выглядят так:

{"something":"example"}

Цель:

Я бы хотел извлечь второе слово между кавычками.

Что я пробовал:

Я начал с пары функций substring и charindex, но мой код выглядит сложнее, чем должно быть.

SELECT SUBSTRING(
            SUBSTRING(
                '{"something":"example"}',
                charindex(':"','{"something":"example"}')+2,
                LEN('{"something":"example"}')-charindex(':"','{"something":"example"}')+2),
            0,
            CHARINDEX('"',SUBSTRING(
                '{"something":"example"}',
                charindex(':"','{"something":"example"}')+2,
                LEN('{"something":"example"}')-charindex(':"','{"something":"example"}')+2))
                )

Есть идеи?

1 Ответ

5 голосов
/ 01 мая 2019

Если вы используете SQL Server 2016+, вы можете использовать OPENJSON:

SELECT [value]
FROM OPENJSON('{"something":"example"}');

db <> fiddle

Таким образом, для таблицы:

SELECT [value]
FROM (VALUES('{"something":"example"}'),
            ('{"another":"sample"}'))V(S)
     CROSS APPLY OPENJSON(V.S);

Возвращает:

value
-------
example
sample
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...