Невозможно использовать JSON_QUERY в предложении WHERE для SQL Server - PullRequest
0 голосов
/ 25 марта 2019

У меня есть таблица: Сотрудник.Схема: (имя varchar, настройки nvarchar (max)).где предпочтения - это строка в формате json.

Мой запрос (который не выполняется):

select JSON_QUERY(preferences, '$.personal')
from Employee
where ISJSON(preferences) = 1
and len(JSON_QUERY(preferences, '$.personal')) > 2

Однако этот запрос работает:

select JSON_QUERY(preferences, '$.personal')
from Employee
where ISJSON(preferences) = 1

Кроме того, если я:

create table tmp(name varchar(256), personal nvarchar(max))

insert into tmp 
select name, JSON_QUERY(preferences, '$.personal') as personal
from Employee
where ISJSON(preferences) = 1

select personal
from tmp
where len(personal) > 2

Все отлично работает.

Это ошибка SQL Server с JSON_QUERY () или я что-то не так делаю?

(EDIT) Сообщение об ошибке:

JSON text is not properly formatted. Unexpected character 'n' is found at position 3.

(РЕДАКТИРОВАТЬ) Также не удается:

select JSON_QUERY(preferences, '$.personal')
from Employee
where ISJSON(preferences) = 1
and JSON_QUERY(preferences, '$.personal') is not null

1 Ответ

0 голосов
/ 25 марта 2019

Нашли обходной путь;

with tmp as (
     select a.name, b.*
     from Employee a
     cross apply OPENJSON(preferences, '$.personal')
     where ISJSON(preferences) = 1
)
select t.[key]
from tmp t
where t.value is not null
and len(t.value) > 2

Я почти уверен, что ошибка с JSON_QUERY () - это ошибка на сервере sql.Надеюсь, это будет исправлено в ближайшее время:)

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