Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL selecionando palavras entre aspas em uma coluna de texto confuso


Você deve encontrar uma maneira melhor de representar o que deseja, mas acho que o seguinte chega perto:
select concat_wc(',', substring_index(substring_index(entry_value, '"', 2), '"' -1),
                 substring_index(substring_index(entry_value, '"', 4), '"' -1),
                 . . .
                )

Você pode ter que colocar uma condição de parada com base no número de valores no número de valores na string, resultando em algo como:
select concat_ws(',',
                 case when num_entry_values >= 1 then substring_index(substring_index(entry_value, '"', 2), '"' -1) end,
                 case when num_entry_values >= 2 then substring_index(substring_index(entry_value, '"', 4), '"' -1) end,
              . . .
             )

Se você não tiver esse número, poderá calculá-lo contando o número de aspas duplas na string.

EDITAR:

Para contar o número de entradas, conte o " :
from (select aev.*,
             (length(entry_value) = length(replace(entry_value, '"', '')) ) / 2 as num_entry_values
      from ch_arf_entry_values aev
     ) aev