PostgreSQL substring get string between brackets

和自甴很熟 提交于 2019-12-04 03:11:20

问题


I have a string, say:

Product Description [White]

I want to extract anything inside the brackets (in this case White) from that string, using the PostgreSQL Substring function. I can get this to work using regexp_matches, but that returns an array which I don't want unless I have no other choice.

I've tried:

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

But this works:

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

What am I doing wrong?


回答1:


(.) only matches a single character, but you want to match multiple characters in there.

So you need (.+)

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



回答2:


i think you want to update some value like grade pay from pay scale or any thing just use following query

UPDATE master.pay_scale SET grade_pay= Case When description LIKE '%(%)%' Then (select substring(description from '((.+))')) else description End::numeric



来源:https://stackoverflow.com/questions/34338116/postgresql-substring-get-string-between-brackets

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!