Запрос Mysql concat

#mysql #json #concatenation

Вопрос:

Мне нужно объединить несколько столбцов для создания запроса, например

 select concat(atributos->'$.listOptions[',valor,'].text') from table
 

и последний запрос должен быть таким

 select atributos->'$.listOptions[1].text' from table
 

но это возвращает строку, я не знаю, делаю ли я что-то не так.

это содержимое атрибутов столбца

 {
  "type": "select",
  "description": "Rota",
  "default": "",
  "required": "0",
  "listOptions": [
    {
      "text": "1 - Jardins",
      "value": "1"
    },
    {
      "text": "2 - Praia do Canto/Shop Vix",
      "value": "2"
    },
    {
      "text": "3 - Hotéis Vitória/Serra",
      "value": "3"
    },
    {
      "text": "6 - Hotéis Vila Velha/Padarias Praia da Costa",
      "value": "6"
    },
    {
      "text": "9 - Cariacica",
      "value": "9"
    },
    {
      "text": "5 - Vitória/Vila Velha",
      "value": "5"
    },
    {
      "text": "10 - Baú/Reboque",
      "value": "10"
    }
  ]
}
 

Ответ №1:

concat работает со значениями, возвращаемыми для столбцов в его аргументах. Например, если бы у вас была таблица:

ID седло col2
1 Привет Мир
2 Фу Бар

и побежал

select concat(col, col2) as x from table

вы бы получили результат

x
Адский мир
Буфет

Невозможно динамически построить синтаксис запроса непосредственно в MySQL без особых проблем. Лучше всего было бы построить запрос на уровне системы, в которой выполняется запрос, а не пытаться сделать это в самом коде SQL. Например, если вы выполняли этот запрос как часть процесса Python, вы могли бы создать запрос в виде строки Python, а затем отправить его в MySQL для запуска.

Комментарии:

1. Поймите, спасибо за объяснение