Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL wählt Wörter in Anführungszeichen innerhalb einer Spalte mit durcheinandergebrachtem Text aus

Sie sollten einen besseren Weg finden, um darzustellen, was Sie wollen, aber ich denke, das Folgende kommt dem nahe:

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

Möglicherweise müssen Sie eine Stoppbedingung basierend auf der Anzahl der Werte in der Anzahl der Werte in der Zeichenfolge einfügen, was zu etwas wie:

führt
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,
              . . .
             )

Wenn Sie diese Zahl nicht haben, können Sie sie berechnen, indem Sie die Anzahl der doppelten Anführungszeichen in der Zeichenfolge zählen.

BEARBEITEN:

Um die Anzahl der Einträge zu zählen, zählen Sie den " :

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