0

我有一个数据库,其中包含一个myfield包含 json 字符串的文件:["2","4","1","6"]OR ["1"]。我想为这个文件做一个过滤器,并想用以下方式查询它:

SELECT id FROM table_name WHERE myfield = '5'-> 此返回不能回显id,因为["2","4","1","6"]没有值 5。

SELECT id FROM table_name WHERE myfield = '1'-> return 可以回显id -> 因为 -> 在 json 字符串myfield中的字段值为 1。

如何解决?我该怎么办?

我试过了,但它对我不起作用:

SELECT id FROM table_name WHERE myfield = '1'

4

3 回答 3

1

id=1例如,你可以做检查

SELECT 1 as id
FROM table_name 
WHERE find_in_set('1', replace(myfield, '"', '')) > 0

您可以在代码中像这样使用它

$this->db->query("SELECT 1 as id 
                  FROM table_name 
                  WHERE find_in_set('1', replace(myfield, '\"', '')) > 0");
于 2013-02-21T12:08:52.080 回答
0

如果您搜索第一项或最后一项,@juergen 给定的解决方案将不起作用。为此,您还需要替换方括号。这对我有用

SELECT * 
FROM `tbl_tasks_weekly` 
WHERE FIND_IN_SET('1', REPLACE( REPLACE( REPLACE(`myfield`,']','') ,  '[',''),'\"','')) 
于 2015-12-18T07:31:38.220 回答
0

Use serialization and deserialization to save or retrieve data from database field.

于 2016-02-18T10:11:25.937 回答