sql >> Databasteknik >  >> RDS >> Mysql

MySQL väljer ord inom citattecken i en kolumn med blandad text

Du borde hitta ett bättre sätt att representera vad du vill, men jag tror att följande kommer nära:

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

Du kanske måste sätta ett stoppvillkor baserat på antalet värden i antalet värden i strängen, vilket resulterar i något 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,
              . . .
             )

Om du inte har detta nummer kan du beräkna det genom att räkna antalet dubbla citattecken i strängen.

EDIT:

För att räkna antalet poster, räkna " :

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



  1. Hur man exporterar frågeresultat till en CSV-fil i SQLcl (Oracle)

  2. Mysql Triggers Infoga och Ta bort i ett?

  3. Det gick inte att hitta en ingångspunkt med namnet "InterlockedIncrement" i DLL:n "kernel32.dll" - [e-postskyddad] 64 bitar

  4. postgresql migrerar JSON till JSONB