powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Поиск заглавных букв в строке
23 сообщений из 23, страница 1 из 1
Поиск заглавных букв в строке
    #39448150
Alexander Warlord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго вечера!

Как можно выбрать нужные записи, значение поля которых содержит любые две или более ЗАГЛАВНЫЕ БУКВЫ? и, допустим, если они в разброс или подряд. Что-то запутался..

К примеру, записи вот такого типа:
аЛДЖЬДЖЬДЖ
моьхЖЭЛДЖПА
ЛЬТЛтьтьЛОЛЦ
рмРПРроЛДЛЖ

Заранее спасибо за помощь или подсказку.
...
Рейтинг: 0 / 0
Поиск заглавных букв в строке
    #39448158
Alexander Warlord,

удали малые буквы
...
Рейтинг: 0 / 0
Поиск заглавных букв в строке
    #39448238
askkas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander Warlord, если правильно понял, то так

Код: plsql
1.
select * from dual where regexp_instr('ЯваАРслвАУ','[А-Я]{2,999}',1,1)>2
...
Рейтинг: 0 / 0
Поиск заглавных букв в строке
    #39448245
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
askkasесли правильно понял

Во-первых прочти что возвращает regexp_instr. Во-вторых, медитируй над "и, допустим, если они в разброс". Затем прочти про regexp_count.

SY.
...
Рейтинг: 0 / 0
Поиск заглавных букв в строке
    #39448354
Alexander Warlord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В целом, надо использовать regexp? с ним проводить танцы с бубном?)
...
Рейтинг: 0 / 0
Поиск заглавных букв в строке
    #39448356
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Warlord,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
with q as (select 'аЛДЖЬДЖЬДЖ' as a from dual union all
select 'моьхЖлджпа' from dual union all
select 'моьхлджпа' from dual union all
select 'ЛтьтьЛ' from dual union all
select 'рмРПРроЛДЛЖ' from dual)

select a from q group by a having regexp_count (a,'[[:upper:]]') >= 2
...
Рейтинг: 0 / 0
Поиск заглавных букв в строке
    #39448357
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dshedoo,

Ну или


Код: plsql
1.
select a from q where regexp_count (a,'[[:upper:]]') >= 2
...
Рейтинг: 0 / 0
Поиск заглавных букв в строке
    #39448361
ORA__SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без regexp

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
with t as
(
select 'раз'  str from dual union all
select 'ДвА'  str from dual union all
select 'ТРи'  str from dual union all
select 'Four' str from dual union all
select 'fIVe' str from dual union all
select 'SIX'  str from dual
)
select str
from t
where length(translate(str, '$' || lower(str), '$')) >= 2

...
Рейтинг: 0 / 0
Поиск заглавных букв в строке
    #39448362
Alexander Warlord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, друзья!
...
Рейтинг: 0 / 0
Поиск заглавных букв в строке
    #39448373
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ORA__SQL,

И надеяться, что str никогда не достигнет максимально возможного размера для varchar2, чтобы не словить ORA-01489.
...
Рейтинг: 0 / 0
Поиск заглавных букв в строке
    #39448563
Alexander Warlord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал сделать немного другой вариант - для заглавных букв, с условием что они идут подряд:


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
create or replace function AAchar (str in VARCHAR2) return number is
i number := 0;
countie number := 0;
begin

for i in 0..length(str)
loop

if( (ascii(substr(str, i, 1)) >= 192 and ascii(substr(str, i, 1))<=223) and (ascii(substr(str, i+1, 1)) >= 192 and ascii(substr(str, i+1, 1))<=223) )
then
return 1;
end if;

end loop;

return 0;

exception when others  then return -1;

end AAchar;





Код: plsql
1.
select AAchar('оЫААодлОа') from dual
...
Рейтинг: 0 / 0
Поиск заглавных букв в строке
    #39448566
ORA__SQL,

Вместо доллара патриотчнее использовать любую заглавную букву.
...
Рейтинг: 0 / 0
Поиск заглавных букв в строке
    #39448570
Alexander Warlord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Точнее без лишнего:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE OR REPLACE function SMASTER.AAchar (str in VARCHAR2) return number is

begin

for i in 1..length(str)
loop

if( (ascii(substr(str, i, 1)) >= 192 and ascii(substr(str, i, 1))<=223) and (ascii(substr(str, i+1, 1)) >= 192 and ascii(substr(str, i+1, 1))<=223) )
then
return 1;
end if;

end loop;

return 0;

exception when others  then return -1;

end AAchar;
...
Рейтинг: 0 / 0
Поиск заглавных букв в строке
    #39448571
Alexander Warlord,

Писать кодировко-зависимый код не хорошо.
...
Рейтинг: 0 / 0
Поиск заглавных букв в строке
    #39448573
Alexander Warlord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Например, ЯORA__SQL,

Вместо доллара патриотчнее использовать любую заглавную букву.
...
Рейтинг: 0 / 0
Поиск заглавных букв в строке
    #39448578
Alexander Warlord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
опять двойкаAlexander Warlord,

Писать кодировко-зависимый код не хорошо.

Согласен. Это просто как собственный вариант :)
...
Рейтинг: 0 / 0
Поиск заглавных букв в строке
    #39448582
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Warlordопять двойкаAlexander Warlord,

Писать кодировко-зависимый код не хорошо.

Согласен. Это просто как собственный вариант :)Поэтому допили свой вариант, чтобы он работал для любой кодировки. Понаставь кейзы на коды символов для каждой из кодировок. Список поддерживаемых кодировок доступен по запросу:
Код: plsql
1.
select value from v$nls_valid_values where parameter = 'CHARACTERSET';
...
Рейтинг: 0 / 0
Поиск заглавных букв в строке
    #39448645
AmKadСписок поддерживаемых кодировок доступен по запросу:
Код: plsql
1.
select value from v$nls_valid_values where parameter = 'CHARACTERSET';


Понятно что ваше сообщение - стёб, но занудства ради замечу, что ничто не мешает вставить в varchar2-поле символ, отсутствующий в кодировке.
...
Рейтинг: 0 / 0
Поиск заглавных букв в строке
    #39448653
и зачем?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
символьный зануда символ, отсутствующий в кодировке.это как?
...
Рейтинг: 0 / 0
Поиск заглавных букв в строке
    #39448658
символьный зануда,

С учетом того, что под varchar2 лежит raw-последовательность, интерпретируемая в текущей кодировке БД, не знаю как тебя понять.
...
Рейтинг: 0 / 0
Поиск заглавных букв в строке
    #39449219
и зачем?символьный зануда символ, отсутствующий в кодировке.это как?chr, utl_raw.cast_to_varchar2
...
Рейтинг: 0 / 0
Поиск заглавных букв в строке
    #39449220
Вставлю символическисимвольный зануда,

С учетом того, что под varchar2 лежит raw-последовательность, интерпретируемая в текущей кодировке БД, не знаю как тебя понять.Можно поизучать состав кодировок через LocaleBuilder.
Там отлично видно символы с какими кодами входят в любую интересующую кодировку, а каких кодов там нет.
...
Рейтинг: 0 / 0
Поиск заглавных букв в строке
    #39449223
То есть не все коды являются допустимыми, т.с. - "валидными", в произвольной, "абстрактной", кодировке.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Поиск заглавных букв в строке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]