我有一張有3000個電子郵件地址的表格,但它們不是唯一的,我想通過修改它們來使它們唯一,例如在@符號之前添加數字。 我想用它來進行測試,在我的情況下修改數據是很好的。如何修改數據使其唯一?
我有像f_name,l_name,email_id,ph_number,地址,城市,州等字段我只是想修改email_id使其唯一。有關如何在oracle中執行操作的任何想法,非常感謝?謝謝!
我有一張有3000個電子郵件地址的表格,但它們不是唯一的,我想通過修改它們來使它們唯一,例如在@符號之前添加數字。 我想用它來進行測試,在我的情況下修改數據是很好的。如何修改數據使其唯一?
我有像f_name,l_name,email_id,ph_number,地址,城市,州等字段我只是想修改email_id使其唯一。有關如何在oracle中執行操作的任何想法,非常感謝?謝謝!
可以使用rownum
psudocolumn修改的值,維卡斯Harida暗示:
update t
set email_id = substr(email_id, 1, instr(email, '@') - 1)
|| rownum || substr(email_id, instr(email, '@'));
現有email_id
在@
被分割,然後放回在中間的rownum
在一起。
例如:
create table t (email_id varchar2(80));
table T created.
insert into t (email_id)
select '[email protected]' from dual
union all select '[email protected]' from dual
union all select '[email protected]' from dual
union all select '[email protected]' from dual
union all select '[email protected]' from dual;
5 rows inserted.
update t
set email_id = substr(email_id, 1, instr(email_id, '@') - 1)
|| rownum || substr(email_id, instr(email_id, '@'));
5 rows updated.
select * from t;
EMAIL_ID
--------------------------------------------------------------------------------
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
如果你想要一些更均勻的(雖然我不認爲你關心),你可以訪問dbms_random
包,你可以這樣做:
update t
set email_id = substr(email_id, 1, instr(email_id, '@') - 1)
|| trunc(dbms_random.value(1, 9999))
|| substr(email_id, instr(email_id, '@'));
...這給像:
EMAIL_ID
--------------------------------------------------------------------------------
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
但你可能會得到collisio ns - 在同一次運行中分配兩次相同的「隨機」號碼 - 這不會發生在rownum
。
無論哪種方式,將字符添加到現有的值可能會使列太長,所以您需要注意這一點。
它爲我工作! – user3225011
你會用隨機的電子郵件地址做什麼? – user2864740