我觉得我错过了一些很简单的东西。我想从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/

10-12 07:36
查看更多