Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Выборка на апдейт  [new]
1234512345
Member

Откуда:
Сообщений: 209
select 
   substr(ad.LOCAL_ADDR,0,instr(upper(ad.LOCAL_ADDR),'Д.')-1) as STREET
,   trim(translate(substr(ad.LOCAL_ADDR,instr(upper(ad.LOCAL_ADDR),'Д.')
,(instr(upper(ad.LOCAL_ADDR),'КВ.')- instr(upper(ad.LOCAL_ADDR),'Д.'))),'Д,.КОРП',' ')) as BUILDING
,  SUBSTR(ad.LOCAL_ADDR,instr(upper(ad.LOCAL_ADDR),'КВ.')+3) AS FLAT 
,  ad.LOCAL_ADDR
from 
address ad 
where 
ad.KLADR_CODE IS NULL 
AND ad.STREET IS NOT NULL 
AND ad.PROPIS = '1'
AND ad.BUILDING IS NULL
--AND ad.REGION_ID IS NULL
AND UPPER(SUBSTR(ad.LOCAL_ADDR,instr(upper(ad.LOCAL_ADDR),'КВ.'),3)) Like 'КВ.'
AND SUBSTR(ad.LOCAL_ADDR,instr(upper(ad.LOCAL_ADDR),'КВ.')+3) IS NOT NULL 
AND  substr(ad.LOCAL_ADDR,0,instr(upper(ad.LOCAL_ADDR),'Д.')-1) is NOT NULL

Помогите пожалуста составить запрос на update
20 авг 07, 13:54    [4547257]     Ответить | Цитировать Сообщить модератору
 Re: Выборка на апдейт  [new]
Elic
Member

Откуда:
Сообщений: 29979
Предлагаю всех выписать к чертям
update address ad set ad.PROPIS = '0' where ...
20 авг 07, 14:10    [4547407]     Ответить | Цитировать Сообщить модератору
 Re: Выборка на апдейт  [new]
1234512345
Member

Откуда:
Сообщений: 209
Elic
Предлагаю всех выписать к чертям
update address ad set ad.PROPIS = '0' where ...

аха еще drop all user cascade
20 авг 07, 14:13    [4547428]     Ответить | Цитировать Сообщить модератору
 Re: Выборка на апдейт  [new]
Elic
Member

Откуда:
Сообщений: 29979
1234512345
аха еще drop all user cascade
Если автор идиот, то это не проблемы форума :)
20 авг 07, 14:18    [4547469]     Ответить | Цитировать Сообщить модератору
 Re: Выборка на апдейт  [new]
1234512345
Member

Откуда:
Сообщений: 209
Изменение поля стрит. В этом поле внесены все данные в строку Улица Дом Квартира.
Селектом отделил улицу дом квартиру.
Но вот с обновлением возникли сложности так как записей много.
Как правильно написать апдейт чтобы разнести правильно дом квартиру и улицу по своим полям?.
20 авг 07, 14:38    [4547669]     Ответить | Цитировать Сообщить модератору
 Re: Выборка на апдейт  [new]
Mikst
Member

Откуда: Москва
Сообщений: 983
1234512345

Как правильно написать апдейт


С какой из шести букв затруднения?

U P D A T E
20 авг 07, 15:03    [4547985]     Ответить | Цитировать Сообщить модератору
 Re: Выборка на апдейт  [new]
1234512345
Member

Откуда:
Сообщений: 209
Mikst
1234512345

Как правильно написать апдейт


С какой из шести букв затруднения?

U P D A T E

В результате селекта получилось
STREET | BUILDING | FLAT | LOCAL_ADDR
Шуйская | 43 | 51 | Шуйская д. 43 кв. 51
Лесная | 5 | 76 | Лесная д. 5 кв. 76
Конская | 53 | 567 | Конская д. 53 кв. 567

update address
set
street = ???
flat = ???
BUILDING = ???
where 
ad.KLADR_CODE IS NULL 
AND ad.STREET IS NOT NULL 
AND ad.PROPIS = '1'
AND ad.BUILDING IS NULL
--AND ad.REGION_ID IS NULL
AND UPPER(SUBSTR(ad.LOCAL_ADDR,instr(upper(ad.LOCAL_ADDR),'КВ.'),3)) Like 'КВ.'
AND SUBSTR(ad.LOCAL_ADDR,instr(upper(ad.LOCAL_ADDR),'КВ.')+3) IS NOT NULL 
AND  substr(ad.LOCAL_ADDR,0,instr(upper(ad.LOCAL_ADDR),'Д.')-1) is NOT NULL
20 авг 07, 15:32    [4548316]     Ответить | Цитировать Сообщить модератору
 Re: Выборка на апдейт  [new]
Elic
Member

Откуда:
Сообщений: 29979
1234512345
update address
set
street = ???
flat = ???
BUILDING = ???
Неужели ты настолько туп, чтобы не сделать последний очевиднейший шажок?
20 авг 07, 15:35    [4548337]     Ответить | Цитировать Сообщить модератору
 Re: Выборка на апдейт  [new]
1234512345
Member

Откуда:
Сообщений: 209
Elic
1234512345
update address
set
street = ???
flat = ???
BUILDING = ???
Неужели ты настолько туп, чтобы не сделать последний очевиднейший шажок?

знал бы где брод не пошел бы в омут
20 авг 07, 15:41    [4548394]     Ответить | Цитировать Сообщить модератору
 Re: Выборка на апдейт  [new]
1234512345
Member

Откуда:
Сообщений: 209
Выбирается же много записей и апдетится много записей.
20 авг 07, 15:56    [4548528]     Ответить | Цитировать Сообщить модератору
 Re: Выборка на апдейт  [new]
Elic
Member

Откуда:
Сообщений: 29979
1234512345
Выбирается же много записей и апдетится много записей.
Ну и что?
Уже давно можно было десять раз попробовать.
20 авг 07, 16:02    [4548600]     Ответить | Цитировать Сообщить модератору
 Re: Выборка на апдейт  [new]
1234512345
Member

Откуда:
Сообщений: 209
UPDATE address1 
set
STREET = substr(LOCAL_ADDR,0,instr(upper(LOCAL_ADDR),'Д.')-1),
BUILDING = trim(translate(substr(LOCAL_ADDR,instr(upper(LOCAL_ADDR),'Д.')
,(instr(upper(LOCAL_ADDR),'КВ.')- instr(upper(LOCAL_ADDR),'Д.'))),'Д,.КОРП',' ')),
FLAT = SUBSTR(LOCAL_ADDR,instr(upper(LOCAL_ADDR),'КВ.')+3)
where
KLADR_CODE IS NULL 
AND STREET IS NOT NULL 
AND PROPIS = '1'
AND BUILDING IS NULL
--AND REGION_ID IS NULL
AND UPPER(SUBSTR(LOCAL_ADDR,instr(upper(LOCAL_ADDR),'КВ.'),3)) Like 'КВ.'
AND SUBSTR(LOCAL_ADDR,instr(upper(LOCAL_ADDR),'КВ.')+3) IS NOT NULL 
AND  substr(LOCAL_ADDR,0,instr(upper(LOCAL_ADDR),'Д.')-1) is NOT NULL 
что выдало
ORA-01401: inserted value too large for column
20 авг 07, 16:09    [4548677]     Ответить | Цитировать Сообщить модератору
 Re: Выборка на апдейт  [new]
Elic
Member

Откуда:
Сообщений: 29979
1234512345
ORA-01401
По-английски не понимаешь?
20 авг 07, 16:14    [4548721]     Ответить | Цитировать Сообщить модератору
 Re: Выборка на апдейт  [new]
1234512345
Member

Откуда:
Сообщений: 209
нет
20 авг 07, 16:18    [4548777]     Ответить | Цитировать Сообщить модератору
 Re: Выборка на апдейт  [new]
OraDen
Member

Откуда:
Сообщений: 828
клинический случай
20 авг 07, 16:19    [4548794]     Ответить | Цитировать Сообщить модератору
 Re: Выборка на апдейт  [new]
1234512345
Member

Откуда:
Сообщений: 209
если знаеш, подскажи, зачем глумится??
Нет, так смысл ответов ни о чем?
20 авг 07, 16:23    [4548832]     Ответить | Цитировать Сообщить модератору
 Re: Выборка на апдейт  [new]
Дубовая голова
Member [заблокирован]

Откуда: с цепи сорвался
Сообщений: 1821
1234512345
нет


Данные по длине превосходят максимально разрешенную длину данных для данного поля.
Вы в дворники не желаете переквалифицироваться ? Больше пользы будет, убей Бог тапком...
20 авг 07, 16:23    [4548833]     Ответить | Цитировать Сообщить модератору
 Re: Выборка на апдейт  [new]
1234512345
Member

Откуда:
Сообщений: 209
это я и так прочитал что большей величины.
Дворником уже работал понизили до програмиста.
20 авг 07, 16:27    [4548864]     Ответить | Цитировать Сообщить модератору
 Re: Выборка на апдейт  [new]
Elic
Member

Откуда:
Сообщений: 29979
1234512345
это я и так прочитал что большей величины.
Последняя попытка нащупать мозг:
select max(length(...)), ... from .. where ...
20 авг 07, 16:44    [4549053]     Ответить | Цитировать Сообщить модератору
 Re: Выборка на апдейт  [new]
1234512345
Member

Откуда:
Сообщений: 209
CREATE TABLE ADDRESS1
(
  SUBJ_ID         VARCHAR2(15)                  NOT NULL,
  POSTINDEX       VARCHAR2(25),
  POSTBOX         VARCHAR2(20),
  COUNTRY_ID      VARCHAR2(8),
  CITY_ID         VARCHAR2(8),
  DISTRICT_ID     VARCHAR2(8),
  LOCAL_ADDR      VARCHAR2(80),
  PROPIS          VARCHAR2(1)                   DEFAULT '1'                   NOT NULL,
  CURRNT          CHAR(1)                       DEFAULT '1'                   NOT NULL,
  STREET          VARCHAR2(40),
  BUILDING        VARCHAR2(10),
  CITY_TYPE       VARCHAR2(8),
  DAT_REG         DATE,
  PHONE           VARCHAR2(20),
  FAX             VARCHAR2(20),
  ADDRESS_TYPE    VARCHAR2(1),
  REGION_ID       VARCHAR2(8),
  ABBR_ID4CITY    VARCHAR2(8),
  PLACE_ID        VARCHAR2(8),
  ABBR_ID4PLACE   VARCHAR2(8),
  ABBR_ID4STREET  VARCHAR2(8),
  KORP            VARCHAR2(10),
  FLAT            VARCHAR2(10),
  ID              NUMBER                        NOT NULL,
  BIRTH_PLACE     VARCHAR2(1),
  KLADR_CODE      VARCHAR2(17),
  FOR_MAIL        VARCHAR2(1)                   DEFAULT '0'                   NOT NULL
)

Вот сама табличка
20 авг 07, 16:48    [4549088]     Ответить | Цитировать Сообщить модератору
 Re: Выборка на апдейт  [new]
OraDen
Member

Откуда:
Сообщений: 828
1234512345
Вот сама табличка
И ???
20 авг 07, 18:44    [4550140]     Ответить | Цитировать Сообщить модератору
 Re: Выборка на апдейт  [new]
OraDen
Member

Откуда:
Сообщений: 828
1234512345
UPDATE address1 
set
STREET = substr(LOCAL_ADDR,0,instr(upper(LOCAL_ADDR),'Д.')-1),
BUILDING = trim(translate(substr(LOCAL_ADDR,instr(upper(LOCAL_ADDR),'Д.')
,(instr(upper(LOCAL_ADDR),'КВ.')- instr(upper(LOCAL_ADDR),'Д.'))),'Д,.КОРП',' ')),
FLAT = SUBSTR(LOCAL_ADDR,instr(upper(LOCAL_ADDR),'КВ.')+3)
where
KLADR_CODE IS NULL 
AND STREET IS NOT NULL 
AND PROPIS = '1'
AND BUILDING IS NULL
--AND REGION_ID IS NULL
AND UPPER(SUBSTR(LOCAL_ADDR,instr(upper(LOCAL_ADDR),'КВ.'),3)) Like 'КВ.'
AND SUBSTR(LOCAL_ADDR,instr(upper(LOCAL_ADDR),'КВ.')+3) IS NOT NULL 
AND  substr(LOCAL_ADDR,0,instr(upper(LOCAL_ADDR),'Д.')-1) is NOT NULL 
что выдало
ORA-01401: inserted value too large for column


Подумай над этим:

SELECT substr(LOCAL_ADDR,0,instr(upper(LOCAL_ADDR),'Д.')-1),
trim(translate(substr(LOCAL_ADDR,instr(upper(LOCAL_ADDR),'Д.')
,(instr(upper(LOCAL_ADDR),'КВ.')- instr(upper(LOCAL_ADDR),'Д.'))),'Д,.КОРП',' ')),
SUBSTR(LOCAL_ADDR,instr(upper(LOCAL_ADDR),'КВ.')+3)
where
KLADR_CODE IS NULL 
AND STREET IS NOT NULL 
AND PROPIS = '1'
AND BUILDING IS NULL
--AND REGION_ID IS NULL
AND UPPER(SUBSTR(LOCAL_ADDR,instr(upper(LOCAL_ADDR),'КВ.'),3)) Like 'КВ.'
AND SUBSTR(LOCAL_ADDR,instr(upper(LOCAL_ADDR),'КВ.')+3) IS NOT NULL 
AND  substr(LOCAL_ADDR,0,instr(upper(LOCAL_ADDR),'Д.')-1) is NOT NULL
AND (length(substr(LOCAL_ADDR,0,instr(upper(LOCAL_ADDR),'Д.')-1)) > 40 OR
     length(trim(translate(substr(LOCAL_ADDR,instr(upper(LOCAL_ADDR),'Д.')
            ,(instr(upper(LOCAL_ADDR),'КВ.')- instr(upper(LOCAL_ADDR),'Д.'))),'Д,.КОРП',' '))) > 10 OR
     length(SUBSTR(LOCAL_ADDR,instr(upper(LOCAL_ADDR),'КВ.')+3)) > 10)
20 авг 07, 20:06    [4550433]     Ответить | Цитировать Сообщить модератору
 Re: Выборка на апдейт  [new]
1234512345
Member

Откуда:
Сообщений: 209
OraDen
1234512345
UPDATE address1 
set
STREET = substr(LOCAL_ADDR,0,instr(upper(LOCAL_ADDR),'Д.')-1),
BUILDING = trim(translate(substr(LOCAL_ADDR,instr(upper(LOCAL_ADDR),'Д.')
,(instr(upper(LOCAL_ADDR),'КВ.')- instr(upper(LOCAL_ADDR),'Д.'))),'Д,.КОРП',' ')),
FLAT = SUBSTR(LOCAL_ADDR,instr(upper(LOCAL_ADDR),'КВ.')+3)
where
KLADR_CODE IS NULL 
AND STREET IS NOT NULL 
AND PROPIS = '1'
AND BUILDING IS NULL
--AND REGION_ID IS NULL
AND UPPER(SUBSTR(LOCAL_ADDR,instr(upper(LOCAL_ADDR),'КВ.'),3)) Like 'КВ.'
AND SUBSTR(LOCAL_ADDR,instr(upper(LOCAL_ADDR),'КВ.')+3) IS NOT NULL 
AND  substr(LOCAL_ADDR,0,instr(upper(LOCAL_ADDR),'Д.')-1) is NOT NULL 
что выдало
ORA-01401: inserted value too large for column


Подумай над этим:

SELECT substr(LOCAL_ADDR,0,instr(upper(LOCAL_ADDR),'Д.')-1),
trim(translate(substr(LOCAL_ADDR,instr(upper(LOCAL_ADDR),'Д.')
,(instr(upper(LOCAL_ADDR),'КВ.')- instr(upper(LOCAL_ADDR),'Д.'))),'Д,.КОРП',' ')),
SUBSTR(LOCAL_ADDR,instr(upper(LOCAL_ADDR),'КВ.')+3)
from address1
where
KLADR_CODE IS NULL 
AND STREET IS NOT NULL 
AND PROPIS = '1'
AND BUILDING IS NULL
--AND REGION_ID IS NULL
AND UPPER(SUBSTR(LOCAL_ADDR,instr(upper(LOCAL_ADDR),'КВ.'),3)) Like 'КВ.'
AND SUBSTR(LOCAL_ADDR,instr(upper(LOCAL_ADDR),'КВ.')+3) IS NOT NULL 
AND  substr(LOCAL_ADDR,0,instr(upper(LOCAL_ADDR),'Д.')-1) is NOT NULL
AND (length(substr(LOCAL_ADDR,0,instr(upper(LOCAL_ADDR),'Д.')-1)) > 40 OR
     length(trim(translate(substr(LOCAL_ADDR,instr(upper(LOCAL_ADDR),'Д.')
            ,(instr(upper(LOCAL_ADDR),'КВ.')- instr(upper(LOCAL_ADDR),'Д.'))),'Д,.КОРП',' '))) > 10 OR
     length(SUBSTR(LOCAL_ADDR,instr(upper(LOCAL_ADDR),'КВ.')+3)) > 10)
22 авг 07, 14:30    [4560427]     Ответить | Цитировать Сообщить модератору
 Re: Выборка на апдейт  [new]
1234512345
Member

Откуда:
Сообщений: 209
Подумал ничего не пришло на ум.
Выборка как и должно было быть вышла
22 авг 07, 14:31    [4560436]     Ответить | Цитировать Сообщить модератору
 Re: Выборка на апдейт  [new]
OraDen
Member

Откуда:
Сообщений: 828
1234512345
Подумал ничего не пришло на ум.
Выборка как и должно было быть вышла
Этот запрос должен отобрать записи не влезающие в вашу таблицу, голову включить не пробовали? Я по вашему зачем условия на длину получаемых строк ставил >40, >10 ? Добавить в select то что я написал в where, чтобы посмотреть какая у вас действительно длина строк получается тоже не судьба?
22 авг 07, 14:58    [4560676]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить