Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Добрый люди помогите разобраться с json в TSQL / 3 сообщений из 3, страница 1 из 1
15.03.2019, 15:56
    #39786825
Игорь_UUS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добрый люди помогите разобраться с json в TSQL
Добрый день.

Делаю например такой запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT 
  [MEDX_Nomenclature].[Key],
  (
    SELECT
	  [SpecimenCode]
    FROM
      [MEDX_NomenclatureSpecimen]
   WHERE
	  [MEDX_NomenclatureSpecimen].[NomenclatureKey] = [MEDX_Nomenclature].[Key]
    FOR JSON PATH
  ) AS [Test]
FROM
  [MEDX_Nomenclature]
WHERE
  [Key] IN (560, 561, 562)



получаю такой ответ (пример одно из записей колонки "Test"):
[{"SpecimenCode":"258520000"},{"SpecimenCode":"258528007"},{"SpecimenCode":"122724004"},{"SpecimenCode":"472881004"}]

Вопрос, можно как то получить просто массив значений, чтоб было так:
["258520000","258528007","122724004","472881004"]
?

я подозреваю, что так уже не получиться (ну если применить фокусы с REPLACE, то можно... но как то криво)) )
...
Рейтинг: 0 / 0
15.03.2019, 17:30
    #39786898
Alex.C
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добрый люди помогите разобраться с json в TSQL
Добрый день, попробуйте по такому принципу:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SELECT 
'[' +
STUFF(
	(
		SELECT 
			[text()] = ',"' + Item + '"'
		FROM
		(
			SELECT 'A' AS Item
			UNION ALL SELECT 'B' AS Item
			UNION ALL SELECT 'C' AS Item
		) AS Q
		FOR XML PATH('')
	),
	1,1,''
)
+ ']'
...
Рейтинг: 0 / 0
15.03.2019, 17:39
    #39786904
Игорь_UUS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добрый люди помогите разобраться с json в TSQL
Alex.CДобрый день, попробуйте по такому принципу:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SELECT 
'[' +
STUFF(
	(
		SELECT 
			[text()] = ',"' + Item + '"'
		FROM
		(
			SELECT 'A' AS Item
			UNION ALL SELECT 'B' AS Item
			UNION ALL SELECT 'C' AS Item
		) AS Q
		FOR XML PATH('')
	),
	1,1,''
)
+ ']'



через "FOR XML" - можно и ещё проще... ясно, я так и думал, что "прямого" варианта попросту нет
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Добрый люди помогите разобраться с json в TSQL / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]