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

Откуда: Москва
Сообщений: 82
Добрый день.
Коллеги, я не сильный знаток Oracle, поэтому спрашиваю у вас.
Есть в базе много текста в различном регистре. Нужно все перевести в верхний регистр. Можно ли в Оракле какой-то командой сделать такое не выгружая данные ?
27 ноя 06, 10:18    [3453480]     Ответить | Цитировать Сообщить модератору
 Re: перевод текста в верхний регистр в базе Oracle  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Прямо таки весь-весь текст?? Странно это.. Хотя подобная тема была, поищите.
Или под "базой" Вы имеете ввиду одну таблицу?
27 ноя 06, 10:20    [3453492]     Ответить | Цитировать Сообщить модератору
 Re: перевод текста в верхний регистр в базе Oracle  [new]
Ka-50
Member

Откуда: Москва
Сообщений: 82
я же сказал, я не знаток Оракла :)

конечно одна таблица.
27 ноя 06, 10:23    [3453510]     Ответить | Цитировать Сообщить модератору
 Re: перевод текста в верхний регистр в базе Oracle  [new]
Iscender
Member

Откуда: Ногинск
Сообщений: 260
RTFM Upper
27 ноя 06, 10:35    [3453573]     Ответить | Цитировать Сообщить модератору
 Re: перевод текста в верхний регистр в базе Oracle  [new]
Ka-50
Member

Откуда: Москва
Сообщений: 82
мне не выбрать и показать на экран нужно, а поменять в таблице весь текст...
27 ноя 06, 10:39    [3453603]     Ответить | Цитировать Сообщить модератору
 Re: перевод текста в верхний регистр в базе Oracle  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Тогда плюс update
27 ноя 06, 10:41    [3453618]     Ответить | Цитировать Сообщить модератору
 Re: перевод текста в верхний регистр в базе Oracle  [new]
_spy_
Member

Откуда: Москва
Сообщений: 826
update table1 set field1 = upper(field1);
27 ноя 06, 10:42    [3453624]     Ответить | Цитировать Сообщить модератору
 Re: перевод текста в верхний регистр в базе Oracle  [new]
Iscender
Member

Откуда: Ногинск
Сообщений: 260
Специально для особо одаренных:
update t set n1=upper(n1)
и так по всем текстовым полям
27 ноя 06, 10:43    [3453638]     Ответить | Цитировать Сообщить модератору
 Re: перевод текста в верхний регистр в базе Oracle  [new]
Ka-50
Member

Откуда: Москва
Сообщений: 82
спасибо большое за помощь!
27 ноя 06, 10:50    [3453704]     Ответить | Цитировать Сообщить модератору
 Re: перевод текста в верхний регистр в базе Oracle  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
UPDATE my_table
SET col_1 = UPPER(col_1)
  , col_2 = UPPER(col_2)
  , col_3 = UPPER(col_3)
...
WHERE (   col_1 <> UPPER(col_1)
       OR col_2 <> UPPER(col_2)
       OR col_3 <> UPPER(col_3)
        ...)
27 ноя 06, 11:04    [3453806]     Ответить | Цитировать Сообщить модератору
 Re: перевод текста в верхний регистр в базе Oracle  [new]
Бабичев Сергей
Member

Откуда:
Сообщений: 2498
SQL*Plus
UPDATE my_table
SET col_1 = UPPER(col_1)
  , col_2 = UPPER(col_2)
  , col_3 = UPPER(col_3)
...
WHERE (   col_1 <> UPPER(col_1)
       OR col_2 <> UPPER(col_2)
       OR col_3 <> UPPER(col_3)
        ...)
Ну тогда уж и в SET-списке нужно делать проверку на несовпадения регистра и апдейтить лишь те поля, где оно не совпадает.
27 ноя 06, 11:08    [3453843]     Ответить | Цитировать Сообщить модератору
 Re: перевод текста в верхний регистр в базе Oracle  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
Бабичев Сергей
SQL*Plus
UPDATE my_table
SET col_1 = UPPER(col_1)
  , col_2 = UPPER(col_2)
  , col_3 = UPPER(col_3)
...
WHERE (   col_1 <> UPPER(col_1)
       OR col_2 <> UPPER(col_2)
       OR col_3 <> UPPER(col_3)
        ...)
Ну тогда уж и в SET-списке нужно делать проверку на несовпадения регистра и апдейтить лишь те поля, где оно не совпадает.
Oracle все равно перезапишет всю строку.
Не знаю как предложенное вами выразить синтаксически...
27 ноя 06, 11:11    [3453869]     Ответить | Цитировать Сообщить модератору
 Re: перевод текста в верхний регистр в базе Oracle  [new]
Iscender
Member

Откуда: Ногинск
Сообщений: 260
Бабичев Сергей
SQL*Plus
UPDATE my_table
SET col_1 = UPPER(col_1)
  , col_2 = UPPER(col_2)
  , col_3 = UPPER(col_3)
...
WHERE (   col_1 <> UPPER(col_1)
       OR col_2 <> UPPER(col_2)
       OR col_3 <> UPPER(col_3)
        ...)
Ну тогда уж и в SET-списке нужно делать проверку на несовпадения регистра и апдейтить лишь те поля, где оно не совпадает.

И колонки не руками писать, а из all_tab_columns динамически
27 ноя 06, 11:12    [3453870]     Ответить | Цитировать Сообщить модератору
 Re: перевод текста в верхний регистр в базе Oracle  [new]
Бабичев Сергей
Member

Откуда:
Сообщений: 2498
SQL*Plus
Oracle все равно перезапишет всю строку.
И то верно...
SQL*Plus
Не знаю как предложенное вами выразить синтаксически...
CASE ;)
27 ноя 06, 11:22    [3453968]     Ответить | Цитировать Сообщить модератору
 Re: перевод текста в верхний регистр в базе Oracle  [new]
Elic
Member

Откуда:
Сообщений: 29979
Бабичев Сергей
SQL*Plus
Не знаю как предложенное вами выразить синтаксически...
CASE ;)
Ну-ну Попробуй-ка продемонстрировать.
27 ноя 06, 11:31    [3454058]     Ответить | Цитировать Сообщить модератору
 Re: перевод текста в верхний регистр в базе Oracle  [new]
Бабичев Сергей
Member

Откуда:
Сообщений: 2498
Elic
Бабичев Сергей
SQL*Plus
Не знаю как предложенное вами выразить синтаксически...
CASE ;)
Ну-ну Попробуй-ка продемонстрировать.
Продемонстрировать-то могу, но вот вижу, что только от такого решения не будет - один фиг придется для каждого поля в select-листе дергать UPPER. А если выясниться, что поле не в верхнем регистре, то UPPER придется вызывать и второй раз. Так что проще сразу всё UPPER-ить, не заморачиваясь на всё остальное...
27 ноя 06, 11:35    [3454090]     Ответить | Цитировать Сообщить модератору
 Re: перевод текста в верхний регистр в базе Oracle  [new]
Бабичев Сергей
Member

Откуда:
Сообщений: 2498
З.Ы.
Если что, то я вот такое имел ввиду:

...set f1 = case when f1 != upper(f1) then upper(f1) else f1 end, ...
27 ноя 06, 11:37    [3454105]     Ответить | Цитировать Сообщить модератору
 Re: перевод текста в верхний регистр в базе Oracle  [new]
Elic
Member

Откуда:
Сообщений: 29979
Бабичев Сергей
Если что, то я вот такое имел ввиду:
...set f1 = case when f1 != upper(f1) then upper(f1) else f1 end, ...
Это только хуже простого оригинального варианта.
27 ноя 06, 11:41    [3454135]     Ответить | Цитировать Сообщить модератору
 Re: перевод текста в верхний регистр в базе Oracle  [new]
Бабичев Сергей
Member

Откуда:
Сообщений: 2498
Elic
Это только хуже простого оригинального варианта.
Я же именно это и признал...
27 ноя 06, 11:45    [3454171]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить