首页 > 解决方案 > 如何从postgresql中包含单词和数字的列中提取数字

问题描述

我正在尝试在 Postgresql 中编写一个查询,我需要从详细信息列中提取订单号,但我只想在列中的条目包含“用作订单 x 的付款”时提取订单号,其中 x 是我需要提取的号码。我不知道该怎么做,因为订单号包含不同数量的数字。这是我到目前为止所拥有的-

示例字符串 - “用作订单 1034267 的付款” 所需输出 - 1034267

示例字符串 - “用作订单 55263 的付款” 所需输出 - 55263

SELECT details
FROM transactions
WHERE details LIKE 'Used as payment on order%'

但这会获取整个列条目,而不仅仅是数字。如何仅从条目中获取数字?

标签: sqlregexpostgresqlsql-like

解决方案


这可以很容易地使用regexp_replace()和删除输入字符串中不是数字的所有内容:

SELECT regexp_replace(details, '[^0-9]+', '', 'g')
FROM transactions
WHERE details LIKE 'Used as payment on order%'

推荐阅读