Oracle拆分字符串并在新列中更新

hsgswve4  于 7个月前  发布在  Oracle
关注(0)|答案(3)|浏览(64)

我有3列来捕获一个人的名字:first_name,middle_name和last_name。我有几个条目,其中的第一个和中间的名字在first_name列中。

first_name   | middle_name | last_name
------------------------------------
James Leroy  |             | Bond

字符串
我需要将中间名移到middle_name列中,这样我的表就像这样。

first_name | middle_name | last_name
------------------------------------
James      | Leroy       | Bond

zte4gxcn

zte4gxcn1#

这个任务并不复杂到需要正则表达式。可以使用简单的字符串函数,并且应该是首选,因为它们更便宜:

update mytable
set 
    first_name = substr(first_name, 1, instr(first_name, ' ') - 1),
    last_name  = substr(first_name, instr(first_name, ' ') + 1)
where instr(first_name, ' ') > 0

字符串

jckbn6z7

jckbn6z72#

多痛苦啊。假设名字里最多有一个空格:

update t
    set first_name = regexp_substr(first_name, '[^ ]+'),
        middle_name = regexp_substr(first_name, '[^ ]+$)
    where first_name like '% %'

字符串

zaqlnxep

zaqlnxep3#

在Oracle中,如果我们想更新一个现有的列,以'/'字符分割(例如),在每个列中的'/'后面出现子字符串。这可以很容易地使用Oracle中的SUBSTR()方法完成,如下所示:

UPDATE TABLE_NAME
SET COLUMN_NAME=SUBSTR(
        COLUMN_NAME, 
        INSTR(COLUMN_NAME, '/')+1,
        LENGTH(COLUMN_NAME)-1
) WHERE <CONDITIONS HERE>;

字符串

相关问题