sql >> Database >  >> RDS >> Mysql

MySQL selecteren van woorden tussen aanhalingstekens in een kolom met door elkaar gegooide tekst

Je zou een betere manier moeten vinden om weer te geven wat je wilt, maar ik denk dat het volgende in de buurt komt:

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

Mogelijk moet u een stopvoorwaarde plaatsen op basis van het aantal waarden in het aantal waarden in de tekenreeks, wat resulteert in iets als:

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

Als je dit getal niet hebt, kun je het berekenen door het aantal dubbele aanhalingstekens in de tekenreeks te tellen.

BEWERKEN:

Om het aantal inzendingen te tellen, tel je de " :

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



  1. stel nieuwe waarde in voor ft_min_word_len FULLTEXT in mysql

  2. Zend Db / Mysql - Invoegen met Select

  3. Rails waar clausule wanneer iets wordt opgeslagen als array

  4. De tijdzone van de MySQL-server wijzigen