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

时间:2017-01-15 11:25:16

标签: sql oracle

我有一个这种格式的字段:

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

3 个答案:

答案 0 :(得分:0)

使用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

答案 1 :(得分:0)

我认为你可以在这里使用regexp_substr。类似的东西:

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

答案 2 :(得分:0)

如果你总想在最后一个逗号后得到这个部分,你可以这样做:

使用SUBSTR + INSTR

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

使用REGEXP_SUBSTR

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

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