我一直试图弄清楚如何删除多个非字母数字或非数字字符,或只返回字符串中的数字字符.我试过了:
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
小智.. 21
另请参阅此hive regexp_extract怪异
我认为regex_extract只会返回第3个参数中声明的组号.
regex_extract
似乎只能在一条线上工作然后退出.
我不知道替换对手.
它可能适用于非alphanum数据,但如果你喂它这样的东西
REGEXP_REPLACE(error_code, '[^a-zA-Z0-9]+', '')
此外,对于提取,请参阅上面的链接,您可以将其更改为
regexp_extract('X789', '[0-9]+', 0)
多个数字.
要么
regexp_extract('XYZ789', '[a-zA-Z]+', 0)
多个alpha的.
另请参阅此hive regexp_extract怪异
我认为regex_extract只会返回第3个参数中声明的组号.
regex_extract
似乎只能在一条线上工作然后退出.
我不知道替换对手.
它可能适用于非alphanum数据,但如果你喂它这样的东西
REGEXP_REPLACE(error_code, '[^a-zA-Z0-9]+', '')
此外,对于提取,请参阅上面的链接,您可以将其更改为
regexp_extract('X789', '[0-9]+', 0)
多个数字.
要么
regexp_extract('XYZ789', '[a-zA-Z]+', 0)
多个alpha的.