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

CamelCaseをsnake_caseに変換します

    次の正規表現は、すべての大文字の前にアンダースコアを追加します。

    regexp_replace(name, '([A-Z])','_\1', 'g'))
    

    最初はアンダースコアが表示されるため、trim()を使用して削除する必要があります。

    trim(both '_' from lower(regexp_replace(name, '([A-Z])','_\1', 'g')))
    

    次のクエリ:

    with names (name) as (
      values ('StackOverflow'), 
             ('Foo'), 
             ('FooBar'), 
             ('foobar'), 
             ('StackOverflowCom')
    )
    select name, trim(both '_' from lower(regexp_replace(name, '([A-Z])','_\1', 'g'))) as new_name
    from names;
    

    戻り値:

    name             | new_name          
    -----------------+-------------------
    StackOverflow    | stack_overflow    
    Foo              | foo               
    FooBar           | foo_bar           
    foobar           | foobar            
    StackOverflowCom | stack_overflow_com
    


    1. MySQL:重複する期間を2回カウントせずに日時を合計する

    2. SQL:カウントを行に保持するか、データベースからカウントを選択します

    3. Django管理者リストの表示+ForeignKey=空の変更リスト

    4. mysqlUPDATEはINSERTINTOよりも高速ですか?