将字符串中的数字提取出来:postgresql

3

我有一个字符串:我今年10岁,有500个朋友。 我希望返回10和500,但当我执行下面的查询时,它返回了空值:

SELECT
REGEXP_MATCHES('I have the string: I am 10 years old with 500  friends',
                '-?\\d+','g');
2个回答

1
问题出在双反斜杠上。尽管某些数据库要求对正则表达式字符类进行转义,但Postgres只需要一个反斜杠即可。
因此:
select regexp_matches(
    'I have the string: I am 10 years old with 500 friends',
    '-?\d+',
    'g'
);

"'-?'对于您的示例字符串没有意义。我将其保留原样,以防您需要考虑可能存在的负数。"
"在DB Fiddle上的演示"

0

\\d替换为[0-9]

SELECT
  REGEXP_MATCHES(
    'I have the string: I am 10 years old with 500 friends',
    '(-?[0-9]+)','g'
  )

输出:

10
500

请查看实时演示


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接