MySQL-(#1242)子查询返回多于1行

时间:2019-07-03 09:20:02

标签: mysql

我有tbl,其中包括2列:title和params,其值如下:

  • 标题: {“教学”}

  • 参数:

{“ ufield926”:“ 34”,     “ ufield927”:“ Sud”,     “ ufield928”:“ Ara”,     “ ufield929”:“麦加”,     “ ufield930”:“ 1983年1月1日”,     “ ufield933”:“ 011”,     “ ufield934”:“ Mub”,     “ ufield943”:“ SU / HI / 14”,     “ ufield944”:“平均”,     “ ufield946”:“女” } 我想提取“ ufield943”之后的代码:仅SU / HI / 14,并将其与title列中的值连接起来,如下所示:

->教学(SU / HI / 14)

这是我尝试过的查询:

SELECT CONCAT(title, "(", (select 
       substring(
         params,
         locate('ufield943', params) + 12,
         locate('ufield944', params) - locate('ufield943', params) - 21
       ) FROM tbl), ")") AS title
FROM tbl;

每次运行查询时都会出现以下错误

  

“#1242-子查询返回多于1行”

1 个答案:

答案 0 :(得分:1)

我将futureSUBSTRING函数一起从标题中删除了{"..."}

我将- 21更改为- 16,并在(之前添加空格

SELECT CONCAT(substring(title, 3,CHAR_LENGTH(title) - 4 ), " (", 
   substring(
     params,
     locate('ufield943', params) + 12,
     locate('ufield944', params) - locate('ufield943', params) - 16
   ), ")") AS Title
FROM tbl;

CHAR_LENGTH