Извлечение текста из переменной JSON между двумя строками, когда вторая строка встречается более одного раза - PullRequest
0 голосов
/ 11 июня 2019

У меня есть стена текста, созданная из набора данных JSON.Мне нужно извлечь строку, которая происходит внутри этой стены текста.

Стена текста (хранится как переменная @name)

"re_id":110482,"username":"John Smith",

Мне нужно извлечь только Джона Смита из этой строки.Я использовал множество ответов, доступных здесь, чтобы ответить на этот вопрос, однако проблема заключается в том, что в переменной не один раз появляется. Есть ли простой способ CHARINDEX передать это только Джону Смиту?

Также следует отметить, что это SQL Server 2016, однако я не могу использовать DECLARE из-за проприетарного приложения ITIL, в которое мы вводим это.

Вот что у меня есть:

SELECT SUBSTRING('#[VAR.all]#', CHARINDEX('""username":"', '#[VAR.all]#'), CHARINDEX('",','#[VAR.all]#') - CHARINDEX('""username":"', '#[VAR.all]#') + Len(1))  as var

В результате я получаю: "username":"John Smith" где мне нужен только Джон Смит (без кавычек)

Опять же, я не могу использовать функцию DECLARE или любые JSON-запросы.

Спасибозаранее.

1 Ответ

0 голосов
/ 12 июня 2019

если @name представляет стену текста, которую вы указали в дополнительном комментарии, должно сработать следующее изменение (за исключением того, что field4 должно стать именем пользователя):

select substring(@name, CHARINDEX(':', @name, CHARINDEX('field4', @name)) + 2, len(@name) - CHARINDEX(':', @name, CHARINDEX('field4', @name)) - 2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...