我正在尝试从 Postgres 的 varchar 字段中提取一些值。*product_name* 字段可能包含“Big Bag 24-0-3 20 Gallons”或“Small Bag 0-14-40”之类的内容,产品代码为#-#-#。产品代码中的数字可以是 0,也可以是一位或两位数字,但总会有三个数字,由两个破折号隔开。
我已经正确返回了匹配的产品,但是现在我需要将每个数字放在一个单独的字段中,所以我真的很感谢一个比我大脑更大的人来帮助处理子字符串返回!
此正则表达式匹配返回正确的产品:
select * from products where product_name LIKE '%_-_-_%'
我尝试使用子字符串返回产品代码,但它正在切断具有两位数的第三个数字的产品(即“Big Bag 24-0-32 Foo”将返回“24-0-3”)
select trim(substring(name from '%#"__-_-_#"%' for '#')),*
from products where name LIKE '%_-_-_%'
实际上,无论如何,整数对我没有多大好处——我真的需要将三个数字中的每一个都提取到一个单独的子字符串中。