REGEXP_SUBSTR 从 Vertical SQL 中提取子字符串
REGEXP_SUBSTR to extract a substring from 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
我正在尝试 运行 下面的查询以从字符串中获取子字符串,但它给出了错误的结果。我不确定如何使用正则表达式,因为我使用的正则表达式与 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