MySql-在某些单词后选择一些字符并将其添加到另一列

时间:2019-06-18 09:41:23

标签: mysql sql

我有一个包含2列的表:title和param,其值如下:

-标题:Teaching

-参数:

{"ufield926":"34","ufield927":"Sud","ufield928":"Ara","ufield929":"Mecca",
 "ufield930":"1\/1\/1983","ufield933":"011","ufield934":"Mub",
 "ufield943":"SU\/HI\/14","ufield944":"Average","ufield946":"Female"}

我想提取"ufield943":之后的仅SU\/HI\/14之后的代码,并将其与标题列中的值连接起来,如下所示:

Teaching (SU\/HI\/14)

2 个答案:

答案 0 :(得分:0)

尝试此查询:

select *,
       substring(
         params,
         locate('ufield943', params) + 12,
         locate('ufield944', params) - locate('ufield943', params) - 15
       )
from tbl;

但是我假设ufield944紧接在ufield943之后。

Demo

答案 1 :(得分:0)

constructor(private route: ActivatedRoute) { this._private = this.route.snapshot.data['isPrivate']; } 中的值为JSON,所以最好的解决方案可能是查看MySQL JSON support

我对MySQL JSON支持不熟悉,如果那对您不起作用,我会看一下MySQL的REGEXP_SUBSTRREGEXP_REPLACE来做到这一点:

params

regex会发现该值,而不管它在json中的位置如何,并允许在列中使用空格(例如SELECT title REGEXP_REPLACE( REGEXP_SUBSTR(params, '"ufield943"[[:space:]]*:[[:space:]]*"([^"\\]|\\.)+'), '^"ufield943"[[:space:]]*:[[:space:]]*"', '') FROM MyTable )。