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;
Спасибо это помогло. Разбираю дубляжи