Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Поможите с запросом / 11 сообщений из 11, страница 1 из 1
30.04.2003, 11:47
    #32151670
BadMother
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поможите с запросом
Подскажите как сделать след. запрос :
В таблице есть след. адреса...
....
243140 г.Клинцы,РУПС,Бpянской обл.,ул.Октябpьская,40
143300 пгт.Унеча,РУПС,Бpянская обл.,пл.Ленина,2
....
-нужно чтобы оставалось....
....
Клинцы,РУПС,Бpянской обл.,ул.Октябpьская,40
Унеча,РУПС,Бpянская обл.,пл.Ленина,2
....
В общем, все что до первой заглавной буквы отсекать.
Гуру помогите, плиз.
...
Рейтинг: 0 / 0
30.04.2003, 11:53
    #32151681
Sergey M. Medvedev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поможите с запросом
Отрезай по первую точку, если они у тебя везде...
substr(field_name, instr(field_name, '.') + 1), вроде так...

Хотя может upper работает с кирилицей, тогда напиши функцию, возвращающую позицию первой заглавной буквы.
...
Рейтинг: 0 / 0
30.04.2003, 11:59
    #32151692
LG
LG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поможите с запросом
select substr(
'243140 г.Клинцы,РУПС,Бpянской обл.,ул.Октябpьская,40',
instr('243140 г.Клинцы,РУПС,Бpянской обл.,ул.Октябpьская,40', '.', 1, 1) + 1,
length('243140 г.Клинцы,РУПС,Бpянской обл.,ул.Октябpьская,40') - instr('243140 г.Клинцы,РУПС,Бpянской обл.,ул.Октябpьская,40', '.', 1, 1))
from dual

Выдергивает Клинцы,РУПС,Бpянской обл.,ул.Октябpьская,40
Перед "Клинцы" обязятельно должна стоять точка
...
Рейтинг: 0 / 0
30.04.2003, 12:20
    #32151733
Sergey M. Medvedev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поможите с запросом
Функция возвращает позицию первой заглавной буквы или 0 если ее нет в строке

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
FUNCTION INUPPERCHR(str IN varchar2) RETURN number 
IS
  ch char;
  res number;
BEGIN 
  res :=  0 ;
  for i in  1 ..length(str) loop
    ch := substr(str, i,  1 );
    if ch = upper(ch) and lower(ch) <> upper(ch) then
      res := i;
    end if;
  exit when res <>  0 ;  
  end loop;

  RETURN res;
END;


Проверить можно так:
Код: plaintext
1.
select substr('243140 г.Клинцы,РУПС,Бpянской обл.,ул.Октябpьская,40',
inupperchr('243140 г.Клинцы,РУПС,Бpянской обл.,ул.Октябpьская,40')) from dual;
...
Рейтинг: 0 / 0
30.04.2003, 12:26
    #32151745
BadMother
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поможите с запросом
А почему вот из таких адресов:

601785 г.Кольчугино,ОС-5,Владимирской обл.,ул.Дружбы,д.9
601144 г.Петушки,ОПС-4,Владимирской обл.,Ленина,37

получается следующее:

,ул.Дружбы,9
,ул.Ленина,37
...
Рейтинг: 0 / 0
30.04.2003, 12:42
    #32151779
Sergey M. Medvedev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поможите с запросом
У меня с процедурой все работает нормально!
...
Рейтинг: 0 / 0
30.04.2003, 12:48
    #32151793
BadMother
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поможите с запросом
С процдурой, возможно. Но у меня несколько другая задача, у меня просто нет возможности запускать функцию через процедуру, я это все через броузер запускать хочу на РНР скрипте, я на РНР знаю как осуществить, хотелось бы сразу отделаться одним запросом, если есть конечно такая возможность ?
Все равно спасибо за помощь...
...
Рейтинг: 0 / 0
30.04.2003, 13:58
    #32151896
юный ораклист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поможите с запросом
а зачем так криво таблицы заполнять?
Заведи отдельные столбцы для типов населенных пунктов,улиц,индексов и делай любую выборку
...
Рейтинг: 0 / 0
30.04.2003, 14:29
    #32151937
Barracuda UA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поможите с запросом
2BadMother - Sergey M. Medvedev всё верно написал, при условии что перед названием населённого пункта стоит точка - всё работает верно.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
SQL>  SELECT * FROM   test;

C1
 --------------------------------------------------------
 
 143300  пгт.Унеча,РУПС,Бpянская обл.,пл.Ленина, 2 
 243140  г.Клинцы,РУПС,Бpянской обл.,ул.Октябpьская, 40 
 601785  г.Кольчугино,ОС- 5 ,Владимирской обл.,ул.Дружбы,д. 9 
 601144  г.Петушки,ОПС- 4 ,Владимирской обл.,Ленина, 37 

SQL> SELECT substr(C1, instr(C1, '.') +  1 ) FROM test;

SUBSTR(C1,INSTR(C1,'.')+ 1 )
 -----------------------------------------------------
 
Унеча,РУПС,Бpянская обл.,пл.Ленина, 2 
Клинцы,РУПС,Бpянской обл.,ул.Октябpьская, 40 
Кольчугино,ОС- 5 ,Владимирской обл.,ул.Дружбы,д. 9 
Петушки,ОПС- 4 ,Владимирской обл.,Ленина, 37 
...
Рейтинг: 0 / 0
05.05.2003, 09:44
    #32152999
BadMother
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поможите с запросом
2 юный ораклист :
Слава богу, что не я набиваю эти таблицы, а то к примеру по 2000 строк в день я бы уволился :))

Ну да ладно, суть не в этом, люди добрые, а как можно исключить еще и такие адреса, я был невнимателен и просмотрел, что операторы набили адрес без "г.".

На самом деле, лажа выходила вот из таких адресов естественно:

601785 Кольчугино,ОС-5,Владимирской обл.,ул.Дружбы,д.9
601144 Петушки,ОПС-4,Владимирской обл.,Ленина,37

Ну SQL-щики помогите...
...
Рейтинг: 0 / 0
05.05.2003, 09:51
    #32153008
BadMother
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поможите с запросом
А еще есть оказывается и такие форматы адреса :

391920 р.ц.Ухолово,РУПС,Рязанской области,ул.Ленина,д.8
391920 п.г.т.Ухолово,РУПС,Рязанской области,ул.Ленина,д.8

Ребята, если замороченно все это, то не нада
Я на PHP напишу... но было бы не плохо на SQL

Всем спасибо за проявленный интерес к моему сообщению !!!
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Поможите с запросом / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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