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

MySQL vælger ord i anførselstegn i en kolonne med rodet tekst

Du burde finde en bedre måde at repræsentere det, du ønsker, men jeg tror, ​​at følgende kommer tæt på:

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

Du skal muligvis sætte en stopbetingelse baseret på antallet af værdier i antallet af værdier i strengen, hvilket resulterer i noget som:

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

Hvis du ikke har dette tal, kan du beregne det ved at tælle antallet af dobbelte anførselstegn i strengen.

EDIT:

For at tælle antallet af poster skal du tælle " :

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



  1. Hvordan konverterer man tid til iPhone-enhedens tidszone?

  2. Slut dig til to mysql-tabeller

  3. MySQL-tegnkodningsændring. Er dataintegriteten bevaret?

  4. Indlejret sætmodel, tæl elementer i kategorier