如何在PosgreSQL中将模式与正则表达式匹配?

时间:2019-04-03 14:41:26

标签: regex postgresql

在PostgreSQL中,我在列中有两种记录:
ABCD-XYZE12-G56ABCD-XYZE-G56

在两者中,我都希望摆脱G56并分别选择每个。

所以我要查找的查询(BCD-XYZE12)是:

SELECT SUBSTRING(string, '[A-Z]+-[A-Z0-9]+') from table;

但它也匹配:ABCD-XYZE

2 个答案:

答案 0 :(得分:0)

尝试使用正则表达式:^[A-Z]+-(?=[A-Z0-9]*[0-9])[A-Z0-9]+返回类型为ABCD-XYZE12的记录

Demo

答案 1 :(得分:0)

要删除字符串的特定部分,建议使用TextBox1.Text = AAA; //worked TextBox1.Text = BBB; //worked TextBox1.Text = 40; //worked TextBox1.Text = 40.00; //worked TextBox1.Text = 42,20; //worked 。要在应用regexp_replace()之后匹配字符串,可以在regexp_replace()子句中使用~运算符。

WHERE运算符是POSIX正则表达式匹配运算符。 PostgreSQL文档here

例如:

~

SQLFiddle以查看一些工作示例。