У меня есть база данных оракула и фильтр по регулярному выражению, чтобы найти записи с именами, начинающимися с владения в определенном диапазоне. Например, чтобы найти все имена, начинающиеся с A, B или C, я просто использовать:regex для строки начинается с символов в диапазоне
.. WHERE REGEXP_LIKE (last_name, '^[A-C]');
, но я ищу решение для фильтрации на что-то подобное. Найдите имена всех, начиная с «Ab» - «Ch». У кого-то есть идея, как это сделать?
спасибо. Phill
EDIT: Я забыл сказать, что я из Германии, и мне также необходимо поддерживать специальные персонажи. Oracle regex обладает особой способностью использовать все варианты букв. Например, [= A =] означает все вариации A, такие как a, ä, Ä и т. Д.
Решение chocochaos дало мне хороший намек, чтобы решить мою проблему. Для примера, если я хочу, чтобы найти все имена, начинающиеся с «Ne», пока все имена, начинающиеся с «Ot» (включая специальные символы) Я не могу использовать
WHERE REGEXP_LIKE (last_name, '^(([=A=][[=N=]-[=Z=]])|([=B=][[=A=]-[=E=]]))');
EDIT2: другое хорошее решение я узнал, нормализуется все имена-строки для значений, которые больше не содержат специальных символов. Для меня результат один и тот же, но его определенно быстрее:
LOWER(convert(last_name, 'US7ASCII')) >= LOWER('An') AND SUBSTR(LOWER(convert(last_name, 'US7ASCII')),1,LENGTH('Be')) <= LOWER('Be')
ли 'Bzzz' урожденная d для соответствия? – Toto