Поиск всех экземпляров строчных букв в Oracle - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь найти все экземпляры строчных букв в столбце в SQL, проблема в том, что я не могу найти запрос, который будет выполнять то, что я хочу.

TestTable
  Col1   Col2
  apple  WALMART
  APPLE  TARGET
  banana TARGET

В примеревыше, я хочу вставить строки 'apple' и 'banana' в строки 1 и 3, я пытаюсь найти все строчные буквы, а не буквенные строки.

select * from testtable where lower(col1) LIKE '%[abcdefghijklmnopqrstuvwxyz]%' ;

запросвыше возвращает 0 результатов.Любые советы?

1 Ответ

0 голосов
/ 14 февраля 2019

Условие LIKE не использует шаблоны регулярных выражений.Вы ищете точную строку [abcdefghijklmnopqrstuvwxyz], появляющуюся в любом месте значения столбца.Ни один из ваших примеров не содержит этого, поэтому теперь возвращаются строки.

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

Чтобы использовать шаблоны, вам нужно использовать эквивалент регулярного выражения, REGEXP_LIKE;эквивалент того, что вы сделали (я думаю - если вы хотите найти любые символы нижнего регистра, а не просто строчные буквы):

select *
from testtable
where regexp_like (col1, '[abcdefghijklmnopqrstuvwxyz]');

COL1   COL2   
------ -------
apple  WALMART
banana TARGET 

или использование более безопасного подхода скласс символов:

select *
from testtable
where regexp_like (col1, '[[:lower:]]');

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

select *
from testtable
where regexp_like (col1, '[^[:upper:]]');

или исключить любое значение, содержащеелюбые символы в верхнем регистре вообще:

select *
from testtable
where not regexp_like (col1, '[[:upper:]]');

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

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