我必须在不使用 PostgreSQL 中的 SQL 给出位置的情况下获取字符串中的子字符串。
我已经尝试过这种方式,但只显示最后一个数字“2”
我这样工作的字符串是 P1.B1.12
SELECT SUBSTRING(REGISTRATIONNO from '.(.)*') AS REGISTRATIONNO
FROM SUBSCRIBER;
预期的结果是12
- 秒后的一切.
我必须在不使用 PostgreSQL 中的 SQL 给出位置的情况下获取字符串中的子字符串。
我已经尝试过这种方式,但只显示最后一个数字“2”
我这样工作的字符串是 P1.B1.12
SELECT SUBSTRING(REGISTRATIONNO from '.(.)*') AS REGISTRATIONNO
FROM SUBSCRIBER;
预期的结果是12
- 秒后的一切.
select (regexp_split_to_array(registrationno, '\.'))[3]
from subscriber
请注意,这假定所需值始终位于第三个位置。如果不是这种情况,则表达式将返回错误值。
这是一个 SQLFiddle 示例:http ://sqlfiddle.com/#!12/d41d8/1924
你能试试这个吗?
SELECT SUBSTRING(REGISTRATIONNO from '\w*.\w*.(\d+)') AS REGISTRATIONNO
FROM SUBSCRIBER;
也许你可以试试这个:
SELECT SUBSTRING_INDEX(REGISTRATIONNO, '.', -1) AS REGISTRATIONNO
FROM SUBSCRIBER;