0

如何对格式为 JSON 的多个 ID 进行选择?

$query = 'SELECT * FROM articles as a WHERE "10" IN (a.catids)';

The value of a.catids in the db-field is {"0":"10","1":"12"};
4

3 回答 3

2

就像是:

$query = 'SELECT * FROM articles as a WHERE a.catids like '%:"10",%';

我包括了 : 和 ,所以你确定你选择的是值而不是索引

于 2012-04-23T17:49:04.700 回答
1

没有“正确”的方式来做到这一点。MySQL 不知道 JSON 是什么,即使您对 ID 进行文本搜索,您也会注意到它非常慢。

我建议规范化表格。更新您的脚本以简单地将其catids放在单独的表中。

于 2012-04-23T17:49:04.163 回答
1

我猜你正在寻找 LIKE。

SELECT * FROM articles as a WHERE a.catids LIKE '%10%'

您还想查找 LIKE 的语法(因为您可以搜索 `%"_":"10"%' 并且只搜索第二部分甚至更复杂的内容。

不过,最好不要以这种方式存储您的 ID。

于 2012-04-23T17:49:41.827 回答