регулярное выражение oracle — поиск определенной строки

#regex #oracle

#регулярное выражение #Oracle

Вопрос:

У меня есть данные в столбце, подобном этому

 Test 20019-2000 test
Test 119 test
Test 19-EM
Test EM - 19
  

ИТАК, когда я делаю a REGEXP_LIKE(mesage,'19') , он извлекает все 4 записи. Но мое требование заключается в том, что оно должно извлекать строки, в которых строка токена начинается с «19».

ПОЭТОМУ он должен извлекать только 3 и 4 строки. Пожалуйста, помогите мне в этом.

Заранее спасибо.

Ответ №1:

Oracle regexp не поддерживает традиционные операторы b ограничения слов или < . Но вы можете имитировать это, сопоставив начало строки ИЛИ несловесный символ непосредственно перед 19 .

Например, здесь я определяю слово как последовательность буквенно-цифровых символов. Итак, вам нужно

 REGEXP_LIKE( mesage, '(A|W)19' )
  

Будет соответствовать 19 , fred 19 , fred.19 , но нет fred19 . Если вы хотите определить слово как не пробельное и, следовательно, не совпадающее fred.19 , измените его на

 REGEXP_LIKE( mesage, '(A|s)19' )