Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL sélectionnant des mots entre guillemets dans une colonne de texte confus

Vous devriez trouver une meilleure façon de représenter ce que vous voulez, mais je pense que ce qui suit s'en rapproche :

select concat_wc(',', substring_index(substring_index(entry_value, '"', 2), '"' -1),
                 substring_index(substring_index(entry_value, '"', 4), '"' -1),
                 . . .
                )

Vous devrez peut-être mettre une condition d'arrêt basée sur le nombre de valeurs dans le nombre de valeurs dans la chaîne, ce qui donnera quelque chose comme :

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,
              . . .
             )

Si vous n'avez pas ce nombre, vous pouvez le calculer en comptant le nombre de guillemets doubles dans la chaîne.

MODIFIER :

Pour compter le nombre d'entrées, comptez le " :

from (select aev.*,
             (length(entry_value) = length(replace(entry_value, '"', '')) ) / 2 as num_entry_values
      from ch_arf_entry_values aev
     ) aev