Использование функции REGEXP_LIKE в базе данных Oracle

#sql #oracle #oracle11g

Вопрос:

Я хочу проверить строку. Условия таковы :

  1. Он должен быть длиной 9 часов.
  2. первым символом должен быть алфавит(в верхнем регистре).
  3. оставшийся chr должен быть от 0 до 9
  4. Никаких специальных символов не допускается

Я хочу проверить это с помощью REGEXP_LIKE() . Пожалуйста, предложите.

Комментарии:

1. ОК. что вы пытались сделать и где вы застряли?

2. regexp_like(строка, ‘^[A-Z][0-9]’)

Ответ №1:

Вы должны иметь возможность использовать следующий REGEXP_LIKE для проверки ваших входных данных:

REGEXP_LIKE(td.text_value, '^[A-Z][0-9]{8}$')

Объяснение регулярного выражения:

  • ^ — Начало строки
  • [A-Z] — С Большой Буквы
  • [0-9]{8} — Ровно 8 значных символов
  • $ — Конец строки

Вот запрос, подтверждающий определенные варианты использования:

 WITH test_data (text_value) AS
(
  SELECT 'A12345678' FROM DUAL UNION ALL
  SELECT 'a12345678' FROM DUAL UNION ALL
  SELECT 'A1234567' FROM DUAL UNION ALL
  SELECT 'A123456789' FROM DUAL UNION ALL
  SELECT '$12345678' FROM DUAL
)
SELECT td.text_value, 
       CASE WHEN REGEXP_LIKE(td.text_value, '^[A-Z][0-9]{8}

Вот ссылка на документацию по регулярному выражению Oracle (Ссылка)

Кроме того, вот DBFiddle, выполняющий приведенный выше запрос (ссылка)


Комментарии:

1. Большое спасибо за быстрый ответ... Это действительно полезно

2. любезно, вы можете принять ответ как полезный @gayatrimali.

) THEN 'Y' ELSE 'N' END AS VALID
FROM test_data td
Вот ссылка на документацию по регулярному выражению Oracle (Ссылка)

Кроме того, вот DBFiddle, выполняющий приведенный выше запрос (ссылка)

Комментарии:

1. Большое спасибо за быстрый ответ… Это действительно полезно

2. любезно, вы можете принять ответ как полезный @gayatrimali.