Postgresql,正则表达式模式匹配"where"



一个表列是包含多个子字符串的字符串,这些子字符串由分隔符pipe char(|(分隔,如下所示;aa-a|aa-a|a-a|a-a| aa";,分隔符不能是列字符串的前导字符和结束字符。并且匹配检查在"0"中;其中";,匹配时,则选择该行。实际上,这是一个搜索,传入子字符串,如";aa-a";并且搜索具有"0"的所有行;aa-a";作为完整子串;aa-a-a"不应该是匹配的。当只有一个子字符串而没有分隔符时,还需要考虑另一种情况。类似这样的东西:

Select * from tb where REGEX_FUNC(tb.col_1, "pattern")>0

其中";图案";可能像"^aa-a$";(1( REGEX_FUNC应该是什么,需要创建自己的?(2( 什么是";图案";应该是吗?

不需要正则表达式匹配。

您可以将分隔值转换为数组,然后检查数组是否与您的比较值匹配:

where 'aa-a' = any(string_to_array(col1, '|'))

最新更新