在MySQL中的特定字符之前将字符串添加到列值之前

时间:2018-10-05 10:46:04

标签: mysql

想象一下,我有一个表,其中有一个 Params 列,其中包含我的画廊设置。我想通过MySQL查询自动添加其他2个属性。 我已经测试过此查询,但是它将在不正确的列值的第一行添加我的新属性:

UPDATE table 
SET params=CONCAT(',  "slider_fullscreen_button_skin": "myTheme", "slider_zoompanel_skin": "myTheme"',params)
WHERE params NOT LIKE '%myTheme%';

假设我在该列上具有此值:

{"title":"Bessariabian","alias":"Bessariabian","category":"1103","full_width":"false"} 

我希望我的价值变成这样:

{"title":"Bessariabian","alias":"Bessariabian","category":"1103","full_width":"false", "slider_fullscreen_button_skin": "myTheme", "slider_zoompanel_skin": "myTheme"}

我想进行查询,将新属性添加到} 位置之前的值的末尾。 我该如何处理?

1 个答案:

答案 0 :(得分:1)

  • 使用Substring_Index()函数在}首次出现之前获取子字符串。
  • 现在,Concat()包含所需字符串的此子字符串,并在末尾的}

尝试:

UPDATE table 
SET params = CONCAT(
                    SUBSTRING_INDEX(params, '}', 1), 
                    ',  "slider_fullscreen_button_skin": "myTheme", "slider_zoompanel_skin": "myTheme"', 
                    '}'
                   )
WHERE params NOT LIKE '%myTheme%';