#sql #oracle #oracle11g
Вопрос:
Я хочу проверить строку. Условия таковы :
- Он должен быть длиной 9 часов.
- первым символом должен быть алфавит(в верхнем регистре).
- оставшийся chr должен быть от 0 до 9
- Никаких специальных символов не допускается
Я хочу проверить это с помощью 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.