我有一个数据库,它有一个包含json字符串:["2","4","1","6"]或["1"]的已归档的["1"]。我想为这个字段做一个过滤器,并考虑用以下方法查询它:
SELECT id FROM table_name WHERE myfield = '5' ->此返回不能回显id,因为["2","4","1","6"]没有值5。
SELECT id FROM table_name WHERE myfield = '1' ->返回可以回显id->,因为在归档myfield上的json字符串中的->值为1。
怎么才能修好呢?我做什么好?
我试过了,但这对我没用:
SELECT id FROM table_name WHERE myfield = '1'
发布于 2013-02-21 12:08:52
例如,要检查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");发布于 2015-12-18 07:31:38
如果搜索第一项或最后一项,@juergen给出的解决方案将无法工作。为此,还需要替换方括号。这对我来说很管用
SELECT *
FROM `tbl_tasks_weekly`
WHERE FIND_IN_SET('1', REPLACE( REPLACE( REPLACE(`myfield`,']','') , '[',''),'\"','')) 发布于 2016-02-18 10:11:25
使用序列化和反序列化从数据库字段保存或检索数据。
https://stackoverflow.com/questions/15001889
复制相似问题