Hive 查询以提取具有字母数字字符的列
Hive query to extract a column which has alphanumeric characters
我有一个要求,我需要根据列上的过滤器提取数据,过滤器将仅提取字母数字值,这意味着它应至少包含一个字母和一个数字以供考虑。
例如,如果我有五个数字,例如 333、abc、ab333、+33、+ab33,则输出应该只有 ab333 和 +ab33。
我试图使用 rlike 函数来实现它,查询如下所示,但这给出了 table.
中的所有记录
select column_name 来自 table_name where column_name rlike '^[a-zA-Z0-9]+$';
我还尝试了一种不同的方法,使用下面的查询,但是如果遇到特殊字符,例如 +,下面的查询会给出错误的结果。
select column_name 来自 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]*
- 零个或多个字母数字字符
$
- 字符串结尾。
我有一个要求,我需要根据列上的过滤器提取数据,过滤器将仅提取字母数字值,这意味着它应至少包含一个字母和一个数字以供考虑。 例如,如果我有五个数字,例如 333、abc、ab333、+33、+ab33,则输出应该只有 ab333 和 +ab33。 我试图使用 rlike 函数来实现它,查询如下所示,但这给出了 table.
中的所有记录select column_name 来自 table_name where column_name rlike '^[a-zA-Z0-9]+$';
我还尝试了一种不同的方法,使用下面的查询,但是如果遇到特殊字符,例如 +,下面的查询会给出错误的结果。
select column_name 来自 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]*
- 零个或多个字母数字字符$
- 字符串结尾。