我必须在字符串中获取子字符串,而不使用PostgreSQL中的SQL给出位置。
我试过这种方式,但只显示最后一个数字'2'
这种方式我已经工作了 字符串是P1.B1.12
SELECT SUBSTRING(REGISTRATIONNO from '.(.)*') AS REGISTRATIONNO
FROM SUBSCRIBER;
预期结果为12
- 第二个.
答案 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;