我觉得我在这里缺少一些非常简单的东西。我正在尝试从Postgres获取结果列表,我知道行存在,因为当我做一个简单的SELECT *
时我可以看到它们。但是,当我尝试进行LIKE
查询时,我什么也得不回。
示例数据:
{
id: 1,
userId: 2,
cache: '{"dataset":"{\"id\":4,\"name\":\"Test\",\"directory\":\"/data/"...'
};
示例:
SELECT cache FROM storage_table WHERE cache LIKE '%"dataset":"{\"id\":4%';
我需要逃避吗?
答案 0 :(得分:3)
LIKE运算符支持转义通配符(例如,以便您可以搜索下划线或%
符号)。默认转义字符是反斜杠。
为了告诉LIKE
运营商您不想要将反斜杠用作ESCAPE字符,您需要定义另一个,例如~
SELECT cache
FROM storage_table
WHERE cache LIKE '%"dataset":"{\"id\":4%' ESCAPE '~';
您可以使用任何字符,这些字符未出现在您的数据ESCAPE '#'
或ESCAPE '§'
SQLFiddle示例:http://sqlfiddle.com/#!15/7703f/1
但是你应该认真考虑升级到一个完全支持JSON的更新的Postgres版本。由于能够索引JSON文档,因此您的查询不仅更强大,而且还可以更快批次。