Изменить поле в таблице

ALARMus
Дата: 27.11.2009 16:05:11
Как изменить в таблице поле под названием name
Когда ввожу запрос то name воспринимается как команда (выделяется жирным и как следствие при выполнении ошибка), а не как имя в таблице.
tru55
Дата: 27.11.2009 16:08:41
1. где воспринимается и выделяется?
2. человеческое ALTER TABLE пробовал?
ALARMus
Дата: 27.11.2009 16:09:55
Ошибочка поле name выделяет, но воспринимает нормально как код колонки.
Проблема оказалась в другом - при update в строках получаются дубликаты.

Какой командой можно проверить наличие дубликатов, а точнее одинаковость символов до определенного символа в определенной колонке ?
ALARMus
Дата: 27.11.2009 16:11:07
tru55,

Выделяется в Oracle SQL developer в "Enter SQL Statement:"
suPPLer
Дата: 27.11.2009 16:15:20
ALARMus
Проблема оказалась в другом - при update в строках получаются дубликаты.

Какой командой можно проверить наличие дубликатов, а точнее одинаковость символов до определенного символа в определенной колонке ?


select SUBSTR(...)
group by SUBSTR(...)
having count(1) > 1

Но Вам, кмк, подойдёт использование WHERE в UPDATE. Или MERGE...
ALARMus
Дата: 27.11.2009 16:26:25
Лучше опишу задачу чтобы понятнее была цель и методы ее достижения.
(Как писал в другой теме) Надо поменять всем пользователям почтовый адрес
Было: XYZ@A.B.C.ru
Станет: XYZ@B.ru

Для этого воспользовался оператором
email = regexp_replace (email, '@.*B.C.ru', '@B.ru')

Но оказалось (еще не видел сами записи, но судя по ошибке, что получаются дубликаты), что есть в исходном варианте:
XYZ@A.B.C.ru
XYZ@A1.B.C.ru
XYZ@A2.B.C.ru

Поэтому для выяснения надо вывести, для начала, список таких у которых до @ одно и тоже
semenar
Дата: 27.11.2009 16:41:14
автор
Поэтому для выяснения надо вывести, для начала, список таких у которых до @ одно и тоже

примерно:
select count(*),substr(email,1,instr(email,'@')-1) from table_name 
group by substr(email,1,instr(email,'@')-1) having(count(*))>1;
suPPLer
Дата: 27.11.2009 16:46:59
ALARMus,

select *
  from (select x.*, sum(1) over (partition by regexp_substr(upper(x.mail), '^.*@')) q from tab x)
 where q > 1;
ALARMus
Дата: 01.12.2009 15:13:32
suPPLer,

select count(*),substr(email,1,instr(email,'@')-1) from table_name
group by substr(email,1,instr(email,'@')-1) having(count(*))>1;


Спасибо это помогло. Разбираю дубляжи