Почему не выбирает использование подобного запроса в строке json?

Я могу найти этот запрос

SELECT * 
FROM Table 
WHERE CODE_DESC = '{"title:\["1","2","3"\]"}'

Но я не могу найти этот запрос

SELECT * 
FROM Table 
WHERE CODE_DESC LIKE '%{"title:\["1","2","3"\]"}%'

Что отличается?

Я пробовал так:

SELECT * 
FROM Table 
WHERE CODE_DESC LIKE '% {"title:\["1","2","3"\]"} %'

SELECT * 
FROM Table 
WHERE CODE_DESC LIKE '%{"title:\["1","2","3"\]"}%'

но я не могу решить проблему

какую СУБД вы используете MySQL, SQL Server, postgresql. отметьте это правильно

RF1991 04.04.2022 08:01

Во-первых, не используйте LIKE для поиска значений JSON, это ужасная идея. Используйте функции JSON вашей базы данных для извлечения и сравнения искомых значений.

Tomalak 04.04.2022 08:28

Я использую sql-сервер, и это не настоящие данные json. просто строка как json в столбце

Jeremy 04.04.2022 09:42

В sql-сервере вам нужно экранировать [] в лайке, см.: НРАВИТСЯ (Transact-SQL)

Luuk 04.04.2022 09:48

Почему бы вместо этого не использовать настоящие инструменты JSON SQL Server для разбора вашего JSON? Тогда вам может вообще не понадобиться использовать LIKE.

Larnu 04.04.2022 10:14
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
5
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В sql-сервере вам нужно экранировать [] в лайке, см.: НРАВИТСЯ (Transact-SQL)

Это тоже работает (замена [ на и _, что соответствует любому отдельному символу:

SELECT * 
FROM Table 
WHERE CODE_DESC LIKE REPLACE('%{"title:\["1","2","3"\]"}%','[','_')

Другие вопросы по теме