【问题标题】:How to extract a number (price) from description如何从描述中提取数字(价格)
【发布时间】:2019-09-26 04:40:50
【问题描述】:

商品价格为格式

999,99

999 -  1 ..4 digits 
, - comma sign marks decimal point 
99 - 2 digits after price

Postgres 9.1 表包含 char(50) 类型列。 此列可能包含以空格分隔的单独单词的价格。喜欢

Product 12,99 blue
Another product 4,59
This is third 124,39 item price

如何从选择语句中的描述中提取价格?对于这 3 行结果应该是

12,99
4,59
124,39

使用

x86_64-unknown-linux-gnu 上的 PostgreSQL 9.1.2,由 gcc-4.4.real (Debian 4.4.5-8) 4.4.5 编译,64 位

【问题讨论】:

标签: sql regex postgresql substring postgresql-9.1


【解决方案1】:

您可以使用substring(yourString FROM yourPattern) 函数来做到这一点。

SELECT substring(columnName FROM '\d{1,4},\d{2}') 
FROM tableName

正则表达式解释:

d{1,4} - 至少一位,但不超过四位

, - 逗号

d{2} - 正好是两位数

【讨论】:

  • 谢谢。如果它没有被空格分隔,这也会返回价格 product12,33 也返回 12,33
  • @Andrus 欢迎您。如果你不想太多这样的情况,你可以使用SELECT substring(columnName FROM ' \d{1,4},\d{2} ') FROM tableName WHERE substring(columnName FROM ' \d{1,4},\d{2} ') IS NOT NULLSELECT substring(columnName FROM '\s\d{1,4},\d{2}\s') FROM tableName WHERE substring(columnName FROM '\s\d{1,4},\d{2}\s') IS NOT NULL
猜你喜欢
  • 2011-05-16
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
  • 2021-05-06
  • 1970-01-01
  • 1970-01-01
  • 2016-10-26
  • 1970-01-01
相关资源
最近更新 更多