我一直在试图弄清楚如何删除多个非字母数字或非数字字符,或者只返回字符串中的数字字符。 我试过:
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
另请参阅此配置单元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。