select substring(bla,position('PMR' in bla),10) from x
我明白如果在字符串中找不到子字符串,那么位置函数将返回0.在db2中我可以写子字符串(bla,locate(' PMR',bla),10)。如何我可以在postgresSQL中实现这个吗?
我希望在PMR之后显示10个字符 例如:
abcdefgPMR213141565
abcdefgdaaaaaPMR213141563
Result:
213141565
213141563
答案 0 :(得分:1)
只需将len
搜索字符串添加到字符串的postion
即可获得结果。试试这个。
select substring('abcdefgPMR213141565',
position('PMR' in 'abcdefgPMR213141565')+char_length('PMR'),10)
结果: 213141565
<强> SQLFIDDLE DEMO 强>
更新以处理未找到搜索字符串的时间
select substring(a,
position('PMR' in a)+
case when position('PMR' in a) =0 then 0
else char_length('PMR') end ,10)
from x
<强> SQLFIDDLE DEMO 强>