在SQL中获取子字符串

时间:2013-10-12 11:09:56

标签: sql regex postgresql

我必须在字符串中获取子字符串,而不使用PostgreSQL中的SQL给出位置。

我试过这种方式,但只显示最后一个数字'2'

这种方式我已经工作了 字符串是P1.B1.12

SELECT SUBSTRING(REGISTRATIONNO from '.(.)*') AS REGISTRATIONNO 
FROM SUBSCRIBER;

预期结果为12 - 第二个.

之后的所有内容

3 个答案:

答案 0 :(得分:1)

你能试试吗?

SELECT SUBSTRING(REGISTRATIONNO from '\w*.\w*.(\d+)') AS REGISTRATIONNO 
FROM SUBSCRIBER;

答案 1 :(得分:1)

select (regexp_split_to_array(registrationno, '\.'))[3]
from subscriber

请注意,这假设所需的值始终位于第三个位置。如果不是这种情况,表达式将返回错误的值。

这是一个SQLFiddle示例:http://sqlfiddle.com/#!12/d41d8/1924

答案 2 :(得分:0)

也许你可以试试这个:

SELECT SUBSTRING_INDEX(REGISTRATIONNO, '.', -1) AS REGISTRATIONNO 
FROM SUBSCRIBER;