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

範囲充填テーブル

    以下を使用できます:

    SELECT
        DISTINCT PREFIX || ( START_RANGE + LEVEL - 1 )
    FROM
        (
            SELECT
                REGEXP_SUBSTR(START_RANGE, '^[[:alpha:]]+') AS PREFIX,
                REGEXP_SUBSTR(START_RANGE, '\d+$') AS START_RANGE,
                REGEXP_SUBSTR(END_RANGE, '\d+$') AS END_RANGE
            FROM
                TEST
        )
    CONNECT BY
        LEVEL <= END_RANGE - START_RANGE + 1
    ORDER BY 1;
    

    開始範囲と終了範囲のプレフィックスがformat(string || number)

    と同じであると想定しています。

    db<>フィドルデモ

    乾杯!!



    1. 検索語が見つからない場合、SQLクエリは非常に長い間実行され続けます

    2. ORA-02253:制約指定はここでは許可されていません

    3. JOINの問題:解決するSQL文を修正してください:ORA-01799:列がサブクエリに外部結合されていない可能性があります

    4. テーブルを動的に正規化することは実用的ですか?