【发布时间】:2013-09-10 04:50:00
【问题描述】:
我正在查询的表中有一个字段类似于:
Name Phone Category_IDS Category_Labels
Sample 1111111111 ["1"] ["foo", "bar"]
我正在尝试使用 FIND_IN_SET 函数来查找包含逗号分隔列表中列出的值之一的所有行。像这样的东西什么都不返回:
SELECT * FROM sampletable WHERE FIND_IN_SET('1', category_ids) <> 0
如果我这样做,它确实有效:
SELECT * FROM factual_usplaces WHERE FIND_IN_SET('["1"]', category_ids) <> 0
当然,这仅限于搜索 category_ids 或标签仅包含逗号分隔列表中的单个值的行。所以会找到 ["1"] 但不会找到 ["1", "2"]。
有没有办法在查询中即时从字符串中删除括号和引号?
【问题讨论】:
-
表中的数据很奇怪。为什么它们被包裹在[...]中?我建议您阅读有关数据库规范化的文章。
-
该表实际上不是由我创建的,它是一家名为 Factual 的公司,非常广为人知和使用。奇怪的是他们也用括号括住了我......