繁体   English   中英

REGEXP_SUBSTR 从垂直 SQL 中提取 substring

[英]REGEXP_SUBSTR to extract a substring from Vertical SQL

我正在尝试运行以下查询以从字符串中获取 substring 但它给出了错误的结果。 我不确定如何使用正则表达式,因为我使用的正则表达式与 PCRE 配合得很好。

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

在这种情况下,我期望得到ndehqb-a3g4-a10 ,但它会打印原始字符串本身。 要求是获得与-APName-和 -slotId- 之间的任何内容匹配的-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                                                                                                                                                         

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM