sql >> Databáze >  >> RDS >> Mysql

Najděte pozici řetězce a připojte se k řádku jiné tabulky

Rozdělit řetězec do sloupců:

select date,
       substring_index(cost, '-', 1) type_a,
       case when cost regexp '.*-' then
                 substring_index(substring_index(cost, '-', 2), '-', -1)
            else ''
       end type_b,
       case when cost regexp '.*-.*-' then
            substring_index(substring_index(cost, '-', 3), '-', -1)
            else ''
       end type_c,
       case when cost regexp '.*-.*-.*-' then
            substring_index(substring_index(cost, '-', 4), '-', -1)
            else ''
       end type_d,
       case when cost regexp '.*-.*-.*-.*-' then
            substring_index(substring_index(cost, '-', 5), '-', -1)
            else ''
       end type_e
from rate_cost;

Pokud můžete upravit návrh tabulky, je lepší vytvořit více sloupců:

create table rate_cost (
    id int,
    rate int,
    hotel int,
    cost_type_a int,
    cost_type_b int,
    cost_type_c int,
    cost_type_d int,
    cost_type_e int,
    date date);



  1. Rails ActiveRecord:Jak používat proměnné vazby s dvojitými uvozovkami na jsonb

  2. Existuje způsob, jak nastavit čas vypršení platnosti, po kterém se záznam dat v PostgreSQL automaticky smaže?

  3. Opakujte řádky ve výsledku na základě celočíselné hodnoty ve sloupci

  4. Zrušit sloupec neodstraní odkazy na sloupce úplně - postgresql