繁体   English   中英

如何从oracle表中删除列记录的逗号分隔部分

[英]How to remove the comma seperated part of the column record from the oracle table

我们有一个称为“名称”的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

您可以使用以下语句:

update names set id=regexp_replace(id,'^[^\.]+\.','')

如您在此处看到的,不含ID的ID . 根本没有动过:

select regexp_replace('tst234','^[^\.]+\.','') from dual

这里是一个测试.

select regexp_replace('A.0234','^[^\.]+\.','') from dual

使用正则表达式:

update names set id = case
                        when instr(id,'.') between 0 and length(id) - 1 then
                          regexp_replace(id,'^[^\.]*\.(.+)$','\1')
                        else id
                      end;

UPDATE使用以下简单查询:

UPDATE Name
   SET ID = SUBSTR(ID, INSTR(ID, '.')+1);

请参见SQL Fiddle

PS虽然有点奇怪,但是SUBSTR(expr, 0) = SUBSTR(expr,1) 但这有效!

只需使用以下sql查询,即可删除. 从字符串。

UPDATE Names SET ID = regexp_replace(id,'\.+','');

下面的查询将删除前面的所有字符.

UPDATE Names SET ID = substr(id,instr(id,'.')+1);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM