REGEXP_SUBSTR从Vertical SQL中提取子字符串



我试图运行下面的查询来从字符串中获取子字符串,但它给出了错误的结果。我不知道如何使用正则表达式,因为我使用的正则表达式可以很好地与PCRE配合使用。

SELECT REGEXP_SUBSTR(
'Wireless-Interface-APName-ndehqb-a3g4-a10-slotId-1'
, '.*-APName-(.*)-slotId.*'
)

在这种情况下,我希望得到ndehqb-a3g4-a10,但它会打印原始字符串本身。任务是获取与-APName--slotId-之间的任何内容匹配的子字符串

更新

由于Vertica的正则表达式函数使用PCRE,因此使用其他相关标签对此进行标记。

您不是要获取整个模式(即整个输入字符串(,而是要获取圆括号中捕获的第一个子表达式。

这让调用变得有点复杂——我总是要在文档中查找它,因为我似乎永远无法记住所有可能的参数及其顺序。

以下是我对它的称呼,带有注释参数:

SELECT
REGEXP_SUBSTR(
'Wireless-Interface-APName-ndehqb-a3g4-a10-slotId-1' -- in string
, '.*-APName-(.*)-slotId.*'                         -- pattern
, 1                                                    -- search start position
, 1                                                    -- occurrence
, ''                                                   -- modifier
, 1                                                    -- captured subexp number
) AS captured_subexp
;
-- out  captured_subexp 
-- out -----------------
-- out  ndehqb-a3g4-a10                                                                                                                                                         

相关内容

  • 没有找到相关文章

最新更新