【发布时间】:2014-02-20 05:10:33
【问题描述】:
我一直在试图弄清楚如何删除多个非字母数字或非数字字符,或者只返回字符串中的数字字符。我试过了:
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(string, '�','')
编辑:下面的查询能够返回“7789”,这正是我想要的。
SELECT
regexp_replace("7X789", "[^0-9]+", "")
FROM
table_name
【问题讨论】: