Как искать тексты - PullRequest
       16

Как искать тексты

0 голосов
/ 18 апреля 2019

В таблице есть определенный столбец, в котором сотрудники рассказывают о характере платежа или квитанции.

Напишите что-то вроде 'PAYMENT OF SALARIES FOR THE MONTH OF NOVEMBER 2018'. Я хочу иметь код (ORACLE SQL), который будет просто выбиратьмесяцы из этих повествований.

Ответы [ 3 ]

1 голос
/ 18 апреля 2019

Вы можете использовать функции на основе регулярных выражений (_replace, _substr, _count) для извлечения названия месяца, предполагая, что все данные с той же моделью формата, что и комбинация "месяц-год", заканчивающаяся комбинацией

with t(str) as
(
 select 'PAYMENT OF SALARIES FOR THE MONTH OF NOVEMBER 2018' from dual
), t2 as
(
select rtrim(str,regexp_replace(str,'(\D)')) as str       
  from t
), t3 as
(  
select regexp_substr(str,'[^ ]+',1,level) as str, 
       regexp_count(str,'[^ ]+') as cnt,
       level as lvl 
  from t2
 connect by level <= regexp_count(str,'[^ ]+')
)
select str 
  from t3 
 where lvl = cnt;

STR
--------
NOVEMBER
0 голосов
/ 18 апреля 2019
 where
  Date >= to_date(substr(:from_date ,1,10),'YYYY/MM/DD') 
  and 
  Date <= to_date(substr(:last_date,1,10),'YYYY/MM/DD')
0 голосов
/ 18 апреля 2019

даже это будет работать, так как указанный вами текстовый формат такой же:

 select * from (select rownum, regexp_substr("column1",'[^ ]+', 1, level) from Table1
 connect by regexp_substr("column1", '[^ ]+', 1, level) is not null) where rownum<=8
 minus
 select * from (select rownum, regexp_substr("column1",'[^ ]+', 1, level) from Table1
 connect by regexp_substr("column1", '[^ ]+', 1, level) is not null) where rownum<8;

http://sqlfiddle.com/#!4/560dc/13

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...