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

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

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

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

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

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

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

SY.
...
Рейтинг: 0 / 0
04.05.2017, 08:55
    #39448354
Alexander Warlord
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск заглавных букв в строке
В целом, надо использовать regexp? с ним проводить танцы с бубном?)
...
Рейтинг: 0 / 0
04.05.2017, 08:59
    #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
04.05.2017, 09:00
    #39448357
Dshedoo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск заглавных букв в строке
Dshedoo,

Ну или


Код: plsql
1.
select a from q where regexp_count (a,'[[:upper:]]') >= 2
...
Рейтинг: 0 / 0
04.05.2017, 09:06
    #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
04.05.2017, 09:08
    #39448362
Alexander Warlord
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск заглавных букв в строке
Спасибо, друзья!
...
Рейтинг: 0 / 0
04.05.2017, 09:26
    #39448373
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск заглавных букв в строке
ORA__SQL,

И надеяться, что str никогда не достигнет максимально возможного размера для varchar2, чтобы не словить ORA-01489.
...
Рейтинг: 0 / 0
04.05.2017, 11:46
    #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
04.05.2017, 11:47
    #39448566
Поиск заглавных букв в строке
ORA__SQL,

Вместо доллара патриотчнее использовать любую заглавную букву.
...
Рейтинг: 0 / 0
04.05.2017, 11:50
    #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
04.05.2017, 11:50
    #39448571
Поиск заглавных букв в строке
Alexander Warlord,

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

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

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

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

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

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


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

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

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


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