mysql数据库表中有一字段soldInfo,存储如下格式的信息:
[{"optime":"2012-08-31 09:30:38","uid":"4028818a3a0ba9cc013a0bbb42d0000f","rid":"4028818a3a0ba9cc013a0bb9e284000a","controltype":"in","location":"","mfname":"温江百事可乐公司","uname":"库管","rname":"库管"},{"optime":"2012-09-31 09:31:16","uid":"4028818a3a0ba9cc013a0bbb42d0000f","rid":"4028818a3a0ba9cc013a0bb9e284000a","controltype":"out","location":"","mfname":"温江百事可乐公司","uname":"库管","rname":"库管"},{"optime":"2012-10-31 09:31:49","uid":"4028818a3a0ba9cc013a0bbb42d0000f","rid":"4028818a3a0ba9cc013a0bba348c000c","controltype":"in","location":"","mfname":"温江百事可乐公司","uname":"库管","rname":"贴码员"}]
现在,传入参数uid,rid,controltype进行查询,我想让查询结果如以下格式:
{"optime":"2012-08-31 09:30:38","uid":"4028818a3a0ba9cc013a0bbb42d0000f","rid":"4028818a3a0ba9cc013a0bb9e284000a","controltype":"in","location":"","mfname":"温江百事可乐公司","uname":"库管","rname":"库管"}
{"optime":"2012-09-31 09:31:16","uid":"4028818a3a0ba9cc013a0bbb42d0000f","rid":"4028818a3a0ba9cc013a0bb9e284000a","controltype":"out","location":"","mfname":"温江百事可乐公司","uname":"库管","rname":"库管"}
请问下各位大侠sql语句应该怎么写呢?跪求!
[{"optime":"2012-08-31 09:30:38","uid":"4028818a3a0ba9cc013a0bbb42d0000f","rid":"4028818a3a0ba9cc013a0bb9e284000a","controltype":"in","location":"","mfname":"温江百事可乐公司","uname":"库管","rname":"库管"},{"optime":"2012-09-31 09:31:16","uid":"4028818a3a0ba9cc013a0bbb42d0000f","rid":"4028818a3a0ba9cc013a0bb9e284000a","controltype":"out","location":"","mfname":"温江百事可乐公司","uname":"库管","rname":"库管"},{"optime":"2012-10-31 09:31:49","uid":"4028818a3a0ba9cc013a0bbb42d0000f","rid":"4028818a3a0ba9cc013a0bba348c000c","controltype":"in","location":"","mfname":"温江百事可乐公司","uname":"库管","rname":"贴码员"}]
现在,传入参数uid,rid,controltype进行查询,我想让查询结果如以下格式:
{"optime":"2012-08-31 09:30:38","uid":"4028818a3a0ba9cc013a0bbb42d0000f","rid":"4028818a3a0ba9cc013a0bb9e284000a","controltype":"in","location":"","mfname":"温江百事可乐公司","uname":"库管","rname":"库管"}
{"optime":"2012-09-31 09:31:16","uid":"4028818a3a0ba9cc013a0bbb42d0000f","rid":"4028818a3a0ba9cc013a0bb9e284000a","controltype":"out","location":"","mfname":"温江百事可乐公司","uname":"库管","rname":"库管"}
请问下各位大侠sql语句应该怎么写呢?跪求!
解决方案 »
- mysql语句select id from user where info like '%'+id,like后的怎么写?
- linux mysql,用PDO进行连接,不能更新表。
- 还是导出的问题
- now()问题
- 如何写一个mysql存储过程
- mysql 还原数据库
- 请教,linux下mysql如何查询用户的密码?
- 在线等:mysql里面有没有类似sql server 中的@@IDENTITY这样的方法,可以取得最近插入的id ,解决即给分
- 利用struts框架,向mysql中写入中文的时候出现乱码问题???
- 求大佬门帮说一个数据库的简单问题
- 关于PostgreSql远程数据传输问题
- 百度谷歌都未查询到相关信息-navicat8 事件计划已关闭...
';
SET @AQ=SUBSTRING_INDEX(@AA,'},',1);
SELECT @AQ;
SET @AQ=SUBSTRING_INDEX(SUBSTRING_INDEX(@AA,'},',2),'},',-1);
SELECT @AQ;
有没有比如正则表达之类的办法,可以查到数据?
SELECT CONCAT(RIGHT(LEFT(soldInfo,LOCATE(@mysubstr,soldInfo)-1),LOCATE('{',REVERSE(LEFT(soldInfo,LOCATE(@mysubstr,soldInfo)-1)))),LEFT(SUBSTR(soldInfo,LOCATE(@mysubstr,soldInfo)),LOCATE('}',SUBSTR(soldInfo,LOCATE(@mysubstr,soldInfo)))))
FROM `tablename`
WHERE LOCATE(@mysubstr,soldInfo)>0;
把红色字段替换成你的试试。
比如我传入uid是4028818a3a0ba9cc013a0bbb42d0000f,rid是4028818a3a0ba9cc013a0bb9e284000a,那么我就想要解析出以下两条数据:
{"optime":"2012-08-31 09:30:38","uid":"4028818a3a0ba9cc013a0bbb42d0000f","rid":"4028818a3a0ba9cc013a0bb9e284000a","controltype":"in","location":"","mfname":"温江百事可乐公司","uname":"库管","rname":"库管"}
{"optime":"2012-09-31 09:31:16","uid":"4028818a3a0ba9cc013a0bbb42d0000f","rid":"4028818a3a0ba9cc013a0bb9e284000a","controltype":"out","location":"","mfname":"温江百事可乐公司","uname":"库管","rname":"库管"}
同样,如果我传入了controltype参数值为in,那么就只解析出第一条数据。
我试了试你给的答案,是只能解析出一条数据。但是去掉controltype参数,仍然只能解析出一条数据,有什么办法能实现我上面说的需求吗?
SELECT SUBSTRING_INDEX(
SUBSTRING_INDEX(a1.bb,'}',b.id),'}',-1) AS bb
FROM t2 a1 LEFT JOIN lsb1 b
ON (LENGTH(a1.bb)-LENGTH(REPLACE(a1.bb,'}','')))+1>=b.id) aa
WHERE INSTR(bb,'4028818a3a0ba9cc013a0bbb42d0000f')>0 AND INSTR(bb,'4028818a3a0ba9cc013a0bb9e284000a')>0
AND INSTR(bb,'"controltype":"in"')>0
CREATE EXTENSION
iihero=#
iihero=# select 'a=>1,b=>2'::hstore;
hstore
--------------------
"a"=>"1", "b"=>"2"
(1 row)iihero=# insert into tjson values(1, 'a=>1, b=>2, c=>3'::hstore);
INSERT 0 1
iihero=# insert into tjson values(2, 'a=>2, b=>3, c=>4'::hstore);
INSERT 0 1
iihero=# select * from tjson where col2 @>'a=>1';
id | col2
----+------------------------------
1 | "a"=>"1", "b"=>"2", "c"=>"3"
(1 row)iihero=# select * from tjson where col2 @>'a=>1' and col2 @>'b=>2';
id | col2
----+------------------------------
1 | "a"=>"1", "b"=>"2", "c"=>"3"
(1 row)所不同的,只是语法表现形式的不同。还可以充分利用索引。
你所要做的,是要实现一个存储过程,对这个类json串进行解析再匹配。