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

Есть поле с ФИО, разделенные пробелами

Иванов Иван Иванович
Пертов Перт Петрович

Подскажите, пожалуйста, как найти записи у которых между фамилией и именем два пробела (исключаю записи с двумя пробелами между именем и отечеством, а такие есть )
...
Рейтинг: 0 / 0
Поиск пробелов
    #39722690
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrGreenn,

regexp
...
Рейтинг: 0 / 0
Поиск пробелов
    #39722703
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
like
instr
...
Рейтинг: 0 / 0
Поиск пробелов
    #39722950
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrGreenn,

Можно так:
Код: plsql
1.
2.
3.
4.
5.
with t as (select 'Иванов  Иван Иванович' FIO from dual union all
           select 'Пертов Перт  Петрович' FIO from dual)
select  FIO
from t
where instr(FIO,' ',1,2) - instr(FIO,' ',1,1) = 1
...
Рейтинг: 0 / 0
Поиск пробелов
    #39722954
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXL,

Сравнивать на равенство нагляднее, чем на разность, и требуется меньше аргументов.
...
Рейтинг: 0 / 0
Поиск пробелов
    #39722969
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТС вроде не писал, что перед фамилией не будет нескольких пробелов
...
Рейтинг: 0 / 0
Поиск пробелов
    #39722996
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrGreennЕсть поле с ФИО, разделенные пробелами

Фамилия всегда в начале? Фамилия всегда из одного слова?
...
Рейтинг: 0 / 0
Поиск пробелов
    #39723206
MrGreenn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо!
в итоге сделал так

create table temp_table as
select (substr (s_name, instr(s_name, ' ', 1,1))) as str, s_name, objid
from TABLE_USER tt where 1=1
and s_name like '% %'
and (s_name not like '% ' or s_name not like '% %')

select * from TABLE_USER tt
where 1=1
and s_name like '% %'
and (s_name not like '% ' or s_name not like '% %' or s_name not like ' %')
and FA_CHILD2BUS_ORG = -2
and tt.objid not in (select tt1.objid from temp_table tt1 where
REGEXP_LIKE ( (substr (s_name, instr(s_name, ' ', 1,1))), '\w(*)'))
...
Рейтинг: 0 / 0
Поиск пробелов
    #39723227
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrGreennсделал такВот это да! Никогда бы так не написал.

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

Я вообще не понял что Вы хотели найти

Ваш вариант вообше ничего не вернул в таком примере:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
with TABLE_USER as (select 'Иванов  Иван Иванович' s_name, 1 objid from dual union all
           select 'Пертов Перт  Петрович' s_name, 2 objid from dual)

,temp_table as (
select (substr (s_name, instr(s_name, ' ', 1,1))) as str, s_name, objid
from TABLE_USER tt where 1=1 
and s_name like '% %' 
and (s_name not like '% ' or s_name not like '% %'))

select * from TABLE_USER tt
where 1=1 
and s_name like '% %' 
and (s_name not like '% ' or s_name not like '% %' or s_name not like ' %')
--and FA_CHILD2BUS_ORG = -2
and tt.objid not in (select tt1.objid from temp_table tt1 where 
REGEXP_LIKE ( (substr (s_name, instr(s_name, ' ', 1,1))), '\w(*)'))



Хотя по условию Вы хотели найти, в этом примере 'Иванов Иван Иванович' имеющий 2 пробела между фамилией и именем.

Да и конструкция выделенная красным маркером очень смущает
...
Рейтинг: 0 / 0
Поиск пробелов
    #39723576
MirnyiAtom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
regexp_like(ltrim(t.s_name),'^[А-Яа-яЁё]+ {2}')
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Поиск пробелов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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