我有一个这种格式的字段:
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
答案 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用于删除字符串中剩余的任何冗余的前导或尾随空格。