Hive查询,提取包含字母数字字符的列



我有一个需求,我需要根据列上的过滤器提取数据,过滤器将只提取字母数字值,这意味着它应该包含至少一个字母和一个数字以供考虑。例如,如果我有五个数字,如333,abc,ab333,+33,+ab33,输出应该只有ab333和+ab33。我试图使用rlike函数实现这一点,查询如下,但这是给表中的所有记录。

select column_name from table_name where column_name rlike '^[a- za -z -9]+$';

我还尝试了一种不同的方法,使用下面的查询,但在特殊字符如+的情况下,下面的查询给出了错误的结果。

select column_name from table_name where column_name not rlike '^[0-9]+$';

有没有人可以指导我关于这个错误,如果有一个不同的方法。

可以使用

RLIKE '^\+?(?:[0-9]+[a-zA-Z]|[a-zA-Z]+[0-9])[0-9a-zA-Z]*$'

细节:

  • ^-字符串
  • 起始
  • +?-可选的+符号
  • (?:[0-9]+[a-zA-Z]|[a-zA-Z]+[0-9])—一个或多个数字后跟一个字母或一个或多个字母后跟一个数字,然后
  • [0-9a-zA-Z]*-零个或多个字母数字字符
  • $-字符串结束

最新更新