Я могу найти этот запрос
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"\]"}%'
но я не могу решить проблему
Во-первых, не используйте LIKE для поиска значений JSON, это ужасная идея. Используйте функции JSON вашей базы данных для извлечения и сравнения искомых значений.
Я использую sql-сервер, и это не настоящие данные json. просто строка как json в столбце
В sql-сервере вам нужно экранировать []
в лайке, см.: НРАВИТСЯ (Transact-SQL)
Почему бы вместо этого не использовать настоящие инструменты JSON SQL Server для разбора вашего JSON? Тогда вам может вообще не понадобиться использовать LIKE
.
В sql-сервере вам нужно экранировать []
в лайке, см.: НРАВИТСЯ (Transact-SQL)
Это тоже работает (замена [
на и _
, что соответствует любому отдельному символу:
SELECT *
FROM Table
WHERE CODE_DESC LIKE REPLACE('%{"title:\["1","2","3"\]"}%','[','_')
какую СУБД вы используете MySQL, SQL Server, postgresql. отметьте это правильно