PostgreSQL位置函数返回所有记录

时间:2015-01-11 05:58:27

标签: sql postgresql

 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

1 个答案:

答案 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