我在postgres中有一个带有以下各列的表
col1 col2
1 A11CC | D05AX
2 N06AX | N07BA
3 D01AC | G01AG | J02AC | S01AX
4 null
我的目标是获取那些单行'|'的行。我尝试了以下查询,但没有给我想要的输出。
select *, regexp_match(col2, '.*\|{1}') from table;
所需的输出是:
col1 col2
1 A11CC | D05AX
2 N06AX | N07BA
这应该起作用:
select *, regexp_matches(col2, '^[^\|]*\|[^\|]*$') from table;
您的正则表达式中的问题是.*
表示“任何字符0次或多次”,而|
匹配“任何字符”。检查this article,以获取有关使用.*
的更多信息。
我修改了正则表达式以确保其他字符不是使用|
的[^\|]
。