我觉得我错过了一些很简单的东西。我想从PiggRes得到一个结果列表,我知道当我做一个简单的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%';
我需要逃跑吗?
最佳答案
LIKE运算符支持通配符转义(例如,这样您可以搜索下划线或%
符号)。默认转义字符是反斜杠。
为了告诉LIKE
运算符您不想将反斜杠用作转义字符,您需要定义一个不同的字符,例如~
SELECT cache
FROM storage_table
WHERE cache LIKE '%"dataset":"{\"id\":4%' ESCAPE '~';
您可以使用数据中未出现的任何字符,
ESCAPE '#'
或ESCAPE '§'
SQLFiddle示例:http://sqlfiddle.com/#!15/7703f/1
但是您应该认真考虑升级到一个完全支持JSON的最新Postgres版本。您的查询不仅更加健壮,而且由于能够为JSON文档编制索引,它们也可以更快。
关于postgresql - Postgres:对字符串的LIKE查询不会返回任何结果,尽管结果存在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31662620/