簡體   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