sql >> データベース >  >> RDS >> Mysql

文字列の位置を見つけて、別のテーブルの行を結合します

    文字列を列に分割します:

    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;
    

    テーブルのデザインを変更できる場合は、複数の列を作成することをお勧めします:

    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. トリガー内で動的にJOBを作成できますか?

    2. MySQLのORDERBYRAND()関数を最適化するにはどうすればよいですか?

    3. ADO.Net SQLCommand.ExecuteReader()の速度が低下するか、ハングする

    4. Oracleを使用して特定のテーブルの削除を監査するにはどうすればよいですか?