提问者:小点点

如何使用配置单元REGEXP_EXTRACT()函数删除非字母数字或非数字字符


我一直在试图弄清楚如何删除多个非字母数字或非数字字符,或者只返回字符串中的数字字符。 我试过:

SELECT
regexp_extract('X789', '[0-9]', 0)
FROM
table_name

但它返回“7”,而不是“789”。

我还尝试使用NOT MATCH语法^((?!regexp)。)*$:

SELECT
REGEXP_REPLACE('X789', '^((?![0-9]).)*$', '')
FROM
jav_test_ii

regexp_extract是否可以返回多个匹配项? 我真正要做的是清理我的数据,使其只包含数字或字母数字字符。 这似乎有助于删除坏字符,但它不是像[0-9]那样的字符范围。 regexp_replace(字符串,'','')

编辑:下面的查询能够返回'7789',这正是我正在寻找的。

SELECT
regexp_replace("7X789", "[^0-9]+", "")
FROM
table_name

共1个答案

匿名用户

另请参阅此配置单元regexp_extract怪异

我认为regex_extract将只返回第3个参数中声明的组号。

regex_extract似乎只在一行上工作,然后退出。

我不知道替代者的情况。

它可能对非字母数据起作用,但如果你给它这样的东西

regexp_replace(error_code,'[^a-za-z0-9]+','')

另外,对于extract,请参阅上面的链接,您可以将其更改为

regexp_extract('x789','[0-9]+',0)用于多个数字。

regexp_extract('xyz789','[a-zA-Z]+',0)用于多个alpha。