我们有一个名为"名称"的oracle表。它有大约10k的记录。该表中有一列为" ID"。现在这个专栏已经搞砸了,记录看起来有点类似于以下内容。
ID
A.011
A.012
A.013
B.014
B.015
B.016
A-B-C
X_Y_Z
randomName
OtherName
现在,我们决定删除记录中的点(。)分隔部分,暂时保留其他记录。所以记录看起来应该是
ID
011
012
013
014
015
016
A-B-C
X_Y_Z
randomName
OtherName
答案 0 :(得分:1)
您可以使用以下声明:
update names set id=regexp_replace(id,'^[^\.]+\.','')
如您所见,没有.
的ID根本不受影响:
select regexp_replace('tst234','^[^\.]+\.','') from dual
此处使用.
select regexp_replace('A.0234','^[^\.]+\.','') from dual
答案 1 :(得分:0)
使用正则表达式:
update names set id = case
when instr(id,'.') between 0 and length(id) - 1 then
regexp_replace(id,'^[^\.]*\.(.+)$','\1')
else id
end;
答案 2 :(得分:0)
要UPDATE
使用这个简单的查询:
UPDATE Name
SET ID = SUBSTR(ID, INSTR(ID, '.')+1);
P.S。虽然有点奇怪,但SUBSTR(expr, 0) = SUBSTR(expr,1)
。但它有效!
答案 3 :(得分:0)
只需使用以下sql查询,它将从字符串中删除.
。
UPDATE Names SET ID = regexp_replace(id,'\.+','');
以下查询将删除.
UPDATE Names SET ID = substr(id,instr(id,'.')+1);