REGEX для получения значений столбца, который содержит число больше 200000

Они были протестированы для поиска строк

{'_id': /.*CM.*/}               ||find _id where _id contains   ->CM
{'_id': /^CM/}                  ||find _id where _id starts     ->CM
{'_id': /CM$/}                  ||find _id where _id ends       ->CM

{'_id': /.*UcM075237.*/i}       ||find _id where _id contains   ->UcM075237, ignore upper/lower case
{'_id': /^UcM075237/i}          ||find _id where _id starts     ->UcM075237, ignore upper/lower case
{'_id': /UcM075237$/i}          ||find _id where _id ends       ->UcM075237, ignore upper/lower case
0
задан Salman A 25 January 2019 в 20:04
поделиться

3 ответа

Используйте regexp_substr(), преобразуйте в десятичное число и сделайте сравнение:

where to_number(regexp_substr(eventname, '[0-9]+')) >= 200000
0
ответ дан Gordon Linoff 25 January 2019 в 20:04
поделиться

Используйте regexp_like для поиска таких записей и to_number для преобразования таких записей в число для сравнения:

SELECT str, CASE
    WHEN REGEXP_LIKE(str, '^\d{1,6}) THEN CASE
        WHEN TO_NUMBER(str) >= 200000 THEN 'more than 200000'
        ELSE 'less than 200000'
    END
    ELSE str
END AS x_type
FROM (
    SELECT 'Birthday' AS str FROM DUAL UNION
    SELECT '200001' FROM DUAL
    UNION SELECT '200000' FROM DUAL
) tests
0
ответ дан Salman A 25 January 2019 в 20:04
поделиться

\D соответствует нецифровым символам, поэтому вы можете сделать это:

with t(id, eventname) as (
    select 1, 'BIRTHDAY' from dual union all
    select 2, '4040404'  from dual union all
    select 3, '404'      from dual union all
    select 4, '404 PQR'  from dual union all
    select 5, 'NAMEDAY'  from dual )
select t.*, 
       case 
         when regexp_like(eventname, '\D')  then 'OTHER'
         when to_number(eventname) > 200000 then 'OFFER OVER 200'
         else 'OFFER BELOW 200'
       end type
  from t

Результат:

    ID EVENTNAME TYPE
------ --------- ---------------
     1 BIRTHDAY  OTHER
     2 4040404   OFFER OVER 200
     3 404       OFFER BELOW 200
     4 404 PQR   OTHER
     5 NAMEDAY   OTHER
0
ответ дан Ponder Stibbons 25 January 2019 в 20:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: