【发布时间】:2018-05-16 07:19:02
【问题描述】:
我正忙于为特定商家名称构建查找表。我尝试使用以下正则表达式,但它返回的结果少于 Netezza SQL 中的标准“like”函数。请参考以下:
SQL Like 函数:其中 trim(upper(a.MRCH_NME)) like '%CNA %' -- 返回 4622 个匹配项
Netezza SQL 中的正则表达式函数: where array_combine(regexp_extract_all(trim(upper(a.MRCH_NME)),'.*CNA\s','i'),'|') = ' CNA' -- 返回 2226 个匹配项
查看了两个结果集,发现如下字符串不匹配:
!C CNA INT ARR
*CNA PLATZ 0400
015764 CNA CRAD
C#CNA PARK 0
我使用了以下正则表达式:/.*CNA\s'/
知道为什么上述字符串没有作为匹配项返回吗?
谢谢。
【问题讨论】:
-
我认为你需要
\\s或[[:space:]]。另请注意,\s不仅仅匹配空格。 -
累积。 to this reference,
\s匹配 一个空白字符。空白定义为[\t\n\f\r\p{Z}].。因此,您只能将'.*CNA '与'i'/'(?i).*CNA '进行比较 -
谢谢,感谢您的快速回复。马上试试