Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL seleziona le parole tra virgolette all'interno di una colonna di testo confuso

Dovresti trovare un modo migliore per rappresentare ciò che desideri, ma penso che quanto segue si avvicini:

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

Potrebbe essere necessario inserire una condizione di arresto in base al numero di valori nel numero di valori nella stringa, risultando in qualcosa del tipo:

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 non hai questo numero, puoi calcolarlo contando il numero di virgolette nella stringa.

MODIFICA:

Per contare il numero di voci, conta il " :

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