删除oracle sql developer中逗号前的字符串

beq87vna  于 2023-01-25  发布在  Oracle
关注(0)|答案(3)|浏览(156)

我有一个字段是这样的格式:

value 1, description

我尝试做的是通过只保留描述部分并删除值1来更新此列。
我在我的领域的例子:

1st district, Rockville
6th district, Gaithersburg / Montgomery Village

更新后我想要的:

Rockville
Gaithersburg / Montgomery Village

现在我用这个,但是它给出了第一部分而不是第二部分:

SELECT
    (CASE WHEN INSTR(field, ',') > 0
        THEN substr(field, 1, instr(field, ',') +1)
        ELSE myfield
    END) AS myfield
FROM
    mydata
eqzww0vc

eqzww0vc1#

使用comma的位置作为substr函数的起始位置,而不是子字符串长度

SELECT
    (CASE WHEN INSTR(field, ',') > 0
        THEN substr(field, instr(field, ',') +1)
        ELSE myfield
    END) AS myfield
FROM
    mydata

如评论中所述,可以简化为

SELECT substr(field, instr(field, ',') +1) AS myfield
FROM   mydata

待更新

update mydata Set field = substr(field, instr(field, ',') +1)
Where instr(field, ',') > 1
kqhtkvqz

kqhtkvqz2#

我认为您可以在这里使用regexp_substr,类似于:

substr(regexp_substr(field, ',[^,]+'),2)
8aqjt8rx

8aqjt8rx3#

如果你总是想得到最后一个逗号后面的部分,你可以这样做:
使用SUBSTR + INSTR

select 
  trim(substr(field,instr(field,',',-1)+1))
from mydata;

使用REGEXP_SUBSTR

select 
  trim(regexp_substr(field,'[^,]+$'))
from mydata;

TRIM用于删除字符串中任何多余的前导或尾随空格。

相关问题