PostgreSQL子字符串在括号之间获取字符串

时间:2015-12-17 15:21:35

标签: postgresql pattern-matching substring

我有一个字符串,说:

Product Description [White]

我想使用PostgreSQL子串函数从该字符串中提取括号内的任何内容(在本例中为White)。我可以使用regexp_matches来实现此功能,但这会返回一个我不想要的数组,除非我别无选择。

我试过了:

  • substring('string' from '[(.)]')>>> NULL
  • substring('string' from '\[(.)\]')>>> NULL
  • substring('string' from '\\[(.)\\]')>>> NULL

但这有效:

  • substring('string' from 'W(.)i]')>>> h

我做错了什么?

2 个答案:

答案 0 :(得分:12)

(.)仅匹配单个字符,但您希望匹配其中的多个字符。

所以你需要(.+)

substring('Product Description [White]' from '\[(.+)\]')

答案 1 :(得分:-1)

我认为您想要更新某些价值,例如来自工资等级的年级薪酬,或者只是使用以下查询

更新master.pay_scale    SET grade_pay =案例描述LIKE'%(%)%'然后(选择子字符串(描述来自'((。+))'))else description End :: numeric