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

列から大文字の単語を検索するSQL

    これは方法かもしれません:

    -- a test case
    with test(id, str) as (
    select 1, 'This is a EXAMPLE' from dual union all
    select 2, 'This is a TEST' from dual union all
    select 3, 'This is a VALUE' from dual union all
    select 4, 'This IS aN EXAMPLE' from dual
    )
    -- concatenate the resulting words
    select id, listagg(str, ' ') within group (order by pos)
    from (
        -- tokenize the strings by using the space as a word separator
        SELECT id,
               trim(regexp_substr(str, '[^ ]+', 1, level)) str,
               level as pos           
          FROM test t
        CONNECT BY instr(str, ' ', 1, level - 1) > 0
          and prior id = id
          and prior sys_guid() is not null
        )
    -- only get the uppercase words
    where regexp_like(str, '^[A-Z]+$')   
    group by id
    

    アイデアは、すべての文字列をトークン化し、大文字で作成されていない単語を切り取り、残りの単語を連結することです。

    結果:

    1    EXAMPLE
    2    TEST
    3    VALUE
    4    IS EXAMPLE
    

    他の文字を大文字として処理する必要がある場合は、whereを編集できます。 一致する単語をフィルタリングする条件。たとえば、「_」の場合:

    with test(id, str) as (
    select 1, 'This is a EXAMPLE' from dual union all
    select 2, 'This is a TEST' from dual union all
    select 3, 'This is a VALUE' from dual union all
    select 4, 'This IS aN EXAMPLE' from dual union all
    select 5, 'This IS AN_EXAMPLE' from dual
    )
    select id, listagg(str, ' ') within group (order by pos)
    from (
        SELECT id,
               trim(regexp_substr(str, '[^ ]+', 1, level)) str,
               level as pos           
          FROM test t
        CONNECT BY instr(str, ' ', 1, level - 1) > 0
          and prior id = id
          and prior sys_guid() is not null
        )
    where regexp_like(str, '^[A-Z_]+$')   
    group by id
    

    与える:

    1   EXAMPLE
    2   TEST
    3   VALUE
    4   IS EXAMPLE
    5   IS AN_EXAMPLE
    


    1. 二重の結果が私の配列になります(mysql_fetch_array)

    2. MySQLの不正な日時値: '0000-00-00 00:00:00'

    3. SCUMMダッシュボードを使用したMySQLの効果的な監視:パート3

    4. MySQLCOALESCEおよびNULLIF関数