Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL zaznaczający słowa w cudzysłowie w kolumnie pomieszanego tekstu

Powinieneś znaleźć lepszy sposób na reprezentowanie tego, co chcesz, ale myślę, że następujące rzeczy są bliskie:

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

Być może będziesz musiał umieścić warunek zatrzymania w oparciu o liczbę wartości w liczbie wartości w ciągu, w wyniku czego:

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

Jeśli nie masz tej liczby, możesz ją obliczyć, licząc liczbę podwójnych cudzysłowów w ciągu.

EDYCJA:

Aby policzyć liczbę wpisów, policz " :

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Doctrine generujące zapytanie z niewłaściwym aliasem tabeli

  2. MySQL - Dlaczego to zapytanie nie używa indeksu (zgodnie z wyjaśnieniem)

  3. MYSQL QUERY zastępuje wartość NULL z rzędu wartościami średnimi

  4. Czy procedury składowane mogą zwracać zestaw wyników?

  5. MyBatis dodatkowy przecinek w zapytaniu o aktualizację