Impala 支持几类内置函数。这些函数允许你直接在 SELECT 语句中执行数学计算,字符串操作,日期计算,和其他类型的数据转换。内置函数允许 SQL 查询返回所有格式、计算、和类型转换的结果,而不是在其他应用中执行耗时的后处理(postprocessing)(The built-in functions let a SQL query return results with all formatting, calculating, and type conversions applied, rather than performing time-consuming postprocessing in another application)。通过适当的调用函数,你可以像过程编程语言中的表达式或电子表格中的公式一样方便的使用 SQL 查询(By applying function calls where practical, you can make a SQL query that is as convenient as an expression in a procedural programming language or a formula in a spreadsheet)。
Impala 支持的函数分类为:
你可以通过 SELECT 语句调用其中任意的函数。对于绝大多数函数,你可以省略 FROM 子句并为所需参数提供相应的值:
select abs(-1); select concat('The rain ', 'in Spain'); select power(2,5);
当你使用 FROM 子句并制定一个列名作为函数的参数,结果集的每一对象都将应用该函数:
select concat('Country = ',country_code) from all_countries where population > 100000000; select round(price) as dollar_value from product_catalog where price between 0.0 and 100.0;
通常的,假如传入内置函数的参数为 NULL,结果集也为 NULL:
select cos(null); select power(2,null); select concat('a',null,'b');
聚合函数是具有不同规则的特别的一类函数。本类函数计算结果集的所有项目返回一个值,因此 FROM 子句是必需的:
select count(product_id) from product_catalog; select max(height), avg(height) from census_data where age > 20;
聚合函数同样会忽略 NULL 值而不是返回 NULL 结果。例如,假如某个列中一些行的值为 NULL,当计算 AVG() 时这些列的值会被忽略掉。同样的,COUNT(col_name) 查询记录条数只会统计 col_name 列的值不为空的行。
Impala 支持一下数据函数:
abs(double a)
Purpose: 返回参数的绝对值
Return type: double
Usage notes: 使用本函数来保证所有返回值都是正的。它与 positive() 函数不同, positive() 返回原始的参数(除非原始参数为负的)。
acos(double a)
Purpose: 返回参数的反余弦
Return type: double
asin(double a)
Purpose: 返回参数的反正弦
Return type: double
atan(double a)
Purpose: 返回参数的反正切
Return type: double
bin(bigint a)
Purpose: 返回整数值的二进制表示,也就是说,由 0 和 1 组成的字符串
Return type: string
ceil(double a), ceiling(double a)
Purpose: 向上取整函数,返回大于等于输入参数的最小整数
Return type: int
conv(bigint num, int from_base, int to_base), conv(string num, int from_base, int to_base)
Purpose: 进制转换函数,返回整数使用对应进制的字符串表示。输入值可以是字符串,例如把16进制数 fce2 转化为数值。要以数值来使用返回值(例如转换为10进制数),应先用 CAST() 函数转换为相应的类型。
Return type: string
cos(double a)
Purpose: 返回参数的余弦值
Return type: double
degrees(double a)
Purpose: 弧度(radians)转换为角度(degrees)
Return type: double
e()
Purpose: 返回数学常量 e
Return type: double
exp(double a)
Purpose: 返回数学常量 e 的 a 次方
Return type: double
floor(double a)
Purpose: 向下取整函数,返回小于等于输入参数的最大值
Return type: int
fnv_hash(type v),
Purpose: 返回根据输入参数得出的 64-bit 定长的数值,方便应用中实现 HASH 逻辑
Return type: BIGINT
Usage notes:
你可以在应用中使用本函数的返回值,用于负载均衡,分桶(bucketing), 或其他的划分进程和存储的技术
因为返回值可以是任意的 64-bit 的值,为了把值限制在一定范围内,你可以使用包括 ABS() 函数和 % (取模) 操作的表达式。例如,为了产生 0-9 之间的值,可以使用表达式: ABS(FNV_HASH(x)) % 10。
本函数实现了与 Impala 内部使用的,在 CRC32 指令不可用的系统上,相同 HASH 算法(This function implements the same algorithm that Impala uses internally for hashing, on systems where the CRC32 instructions are not available)
本函数实现了 Fowler–Noll–Vo hash 功能,特别是 FNV-1a 。这不是一个完美的哈希函数:一些值的组合会产生相同的结果。不能用于加密(This function implements the Fowler–Noll–Vo hash function, in particular the FNV-1a variation. This is not a perfect hash function: some combinations of values could produce the same result value. It is not suitable for cryptographic use)
例子:
[localhost:21000] > create table h (x int, s string); [localhost:21000] > insert into h values (0, 'hello'), (1,'world'), (1234567890,'antidisestablishmentarianism'); [localhost:21000] > select x, fnv_hash(x) from h; +------------+----------------------+ | x | fnv_hash(x) | +------------+----------------------+ | 0 | -2611523532599129963 | | 1 | 4307505193096137732 | | 1234567890 | 3614724209955230832 | +------------+----------------------+ [localhost:21000] > select s, fnv_hash(s) from h; +------------------------------+---------------------+ | s | fnv_hash(s) | +------------------------------+---------------------+ | hello | 6414202926103426347 | | world | 6535280128821139475 | | antidisestablishmentarianism | -209330013948433970 | +------------------------------+---------------------+ [localhost:21000] > select s, abs(fnv_hash(s)) % 10 from h; +------------------------------+-------------------------+ | s | abs(fnv_hash(s)) % 10.0 | +------------------------------+-------------------------+ | hello | 8 | | world | 6 | | antidisestablishmentarianism | 4 | +------------------------------+-------------------------+
对于较短的参数值,结果的高位(high-order bits of the result)的熵(entropy)较小:
[localhost:21000] > create table b (x boolean); [localhost:21000] > insert into b values (true), (true), (false), (false); [localhost:21000] > select x, fnv_hash(x) from b; +-------+---------------------+ | x | fnv_hash(x) | +-------+---------------------+ | true | 2062020650953872396 | | true | 2062020650953872396 | | false | 2062021750465500607 | | false | 2062021750465500607 | +-------+---------------------+
Added in: Impala 1.2.2
greatest(bigint a[, bigint b ...]), greatest(double a[, double b ...]) greatest(string a[, string b ...]) greatest(timestamp a[, timestamp b ...])
Purpose: 返回输入表达式列表中的最大值
Return type: 与初始化参数值相同的类型,除了 integer 会被提升为 BIGINT,浮点数(floating-point) 被提升为 DOUBLE;当插入到较小的数据类型列时应使用 CAST() 函数
hex(bigint a), hex(string a)
Purpose: 十六进制函数,返回整数值的十六进制表示,或者输入字符串的十六进制表示
Return type: string
least(bigint a[, bigint b ...]), least(double a[, double b ...]) least(string a[, string b ...]) least(timestamp a[, timestamp b ...])
Purpose: 返回输入表达式列表的最小值
Return type: 与初始化参数值相同的类型,除了 integer 会被提升为 BIGINT,浮点数(floating-point) 被提升为 DOUBLE;当插入到较小的数据类型列时应使用 CAST() 函数
ln(double a)
Purpose: 返回参数的自然对数值
Return type: double
log(double base, double a)
Purpose: 返回以第一个参数为底的第二个参数对数值
Return type: double
log10(double a)
Purpose: 返回以10为底的对数值
Return type: double
log2(double a)
Purpose: 返回以2为底的对数值
Return type: double
negative(int a), negative(double a)
Purpose: 返回参数的符号反转值,假如参数已经是负值则返回正值(Returns the argument with the sign reversed; returns a positive value if the argument was already negative)
Return type: int or double,依赖于输入的参数
Usage notes: 应使用 -abs(a) 而不是本函数确保返回的是负数
pi()
Purpose: 常数 pi
Return type: double
pmod(int a, int b), pmod(double a, double b)
Purpose: 正取余函数,返回正的 a 除以 b 的余数
Return type: int or double, depending on type of arguments
positive(int a), positive(double a)
Purpose: 返回不变化的原始参数(即使原始参数是负的)
Return type: int or double, depending on type of arguments
Usage notes: 使用 abs() 而不是本函数来确保返回一个正数
pow(double a, double p), power(double a, double p)
Purpose: 幂函数,返回 a 的 p 次幂
Return type: double
quotient(int numerator, int denominator)
Purpose: 整除函数,返回第一个参数除以第二个参数的商,丢弃小数部分。避免参数为 DOUBLE 时使用 / 整除(Avoids promoting arguments to DOUBLE as happens with the / SQL operator)
Return type: int
radians(double a)
Purpose: 角度(degrees)转换为弧度(radians)
Return type: double
rand(), rand(int seed)
Purpose: 返回 0 到 1 之间的随机数。但输入种子时,将根据种子产生稳定的随机数序列
Return type: double
Usage notes: 当前每次查询之后随机序列会重置,而在同一个查询语句里面调用多个 rand() 函数都会返回相同的值。每次调用 rand() 函数传递一个唯一的种子,则每一次查询不同的数字序列的结果是不同的(For different number sequences that are different for each query, pass a unique seed value to each call to rand())。例如, select rand(unix_timestamp()) from ...
round(double a), round(double a, int d)
Purpose: 四舍五入浮点数取整函数。默认的(使用单个参数),四舍五入到最接近的整数。第二个可选参数指定小数点后多少位保留;小数点后大于零的值舍入到所需的保留位数形成返回值(The optional second argument specifies how many digits to leave after the decimal point; values greater than zero produce a floating-point return value rounded to the requested number of digits to the right of the decimal point)
Return type: 单个参数时为 bigint;第二个参数大于零时为 double
sign(double a)
Purpose: 符号函数,返回 -1, 0, or 1 用于标识输入参数是否有符号
Return type: int
sin(double a)
Purpose: 正弦函数
Return type: double
sqrt(double a)
Purpose: 开平方函数,返回输入参数的平方根
Return type: double
tan(double a)
Purpose: 正切函数Returns the tangent of the argument.
Return type: double
unhex(string a)
Purpose: 十六进制反转函数,返回输入参数的十六进制数对应的 ASCII 码值对应的字符(Returns a string of characters with ASCII values corresponding to pairs of hexadecimal digits in the argument)
Return type: string
Impala 支持一下类型转换函数:
转换函数通常与其他函数联合使用,明确的传输期望的数据类型。Impala 严格约束函数参数的数据类型。例如,Impala 无法自动金星类型转换,如将 DOUBLE 转换为 FLOAT,BIGINT 转换为 INT, 或其他的可能丧失精度或发生溢出情况。当传递一个列或字符到期望值是不同数据类型的函数时,应使用 CAST 函数。例如:
select concat('Here are the first ',10,' results.'); -- Fails select concat('Here are the first ',cast(10 as string),' results.'); -- Succeeds
Impala 中日期和时间数据的基础数据类型是 TIMESTAMP,其中既有日期也有时间。提取其中的某一字段的函数通常返回整数值,如 hour() , minute() 函数。格式化日期部分的函数通常返回一个字符串,如 date_add() , to_date()。
Impala 支持一下日期时间函数:
date_add(string startdate, int days)
Purpose: 日期增加函数,在字符串表示的日期(startdate)上增加指定的天数(days)
Return type: string
date_sub(string startdate, int days)
Purpose: 日期减少函数,在字符串表示的日期(startdate)上减少指定的天数(days)
Return type: string
datediff(string enddate, string startdate)
Purpose: 日期比较函数,返回 enddate 减去 startdate 得到的天数(注:与其中的时间无关)
Return type: int
day(string date), dayofmonth(string date)
Purpose: 返回字符串日期时间中的日期部分(Returns the day field from a date represented as a string)
Return type: int
dayname(string date)
Purpose: 返回字符串日期时间中的日期部分,并转换为该日期对应的名称。范围为从 'Sunday' 到 'Saturday'。用于生成报表的查询,作为调用 dayofweek() 函数和使用 CASE 表达式转换数字为字符串的替换函数(Used in report-generating queries, as an alternative to calling dayofweek() and turning that numeric return value into a string using a CASE expression)
Return type: string
dayofweek(string date)
Purpose: 返回字符串日期时间中的日期部分,并转换为该日期在一周中对应的序号。范围为 1 (Sunday) 到 7 (Saturday)。
Return type: int
from_unixtime(bigint unixtime[, string format])
Purpose: Unix 时间戳转日期函数,将自 Unix 纪元开始的秒数转换为指定格式的日期(Converts the number of seconds from the Unix epoch to the specified time into a string)
Return type: string
from_utc_timestamp(timestamp, string timezone)
Purpose: 将指定的 UTC 时间戳转换为指定时区的时间戳(Converts a specified UTC timestamp value into the appropriate value for a specified time zone)
Return type: timestamp
hour(string date)
Purpose: 返回字符串日期时间中的小时部分
Return type: int
minute(string date)
Purpose: 返回字符串日期时间中的分钟部分
Return type: int
month(string date)
Purpose: 返回字符串日期时间中的月份部分
Return type: int
now()
Purpose: 返回当前的日期时间(相对于 UTC 时区)的时间戳值
Return type: timestamp
second(string date)
Purpose: 返回字符串日期时间中的秒部分
Return type: int
to_date(string timestamp)
Purpose: 返回字符串表示的时间戳中的日期部分
Return type: string
to_utc_timestamp(timestamp, string timezone)
Purpose: 将指定时区的时间戳的值转换为对应的 UTC 时区的值(Converts a specified timestamp value in a specified time zone into the corresponding value for the UTC time zone)
Return type: timestamp
unix_timestamp(), unix_timestamp(string date), unix_timestamp(string date, string pattern)
Purpose: 返回一个当前日期时间的时间戳,或返回一个指定格式的日期时间的时间戳(Returns a timestamp representing the current date and time, or converts from a specified date and time value represented as a string)
Return type: bigint
weekofyear(string date)
Purpose: 返回日期所在的周(1-53)(Returns the corresponding week (1-53) from a date represented as a string)
Return type: int
year(string date)
Purpose: 返回字符串日期时间的年部分(Returns the year field from a date represented as a string)
Return type: int
Impala 支持下列用于测试是否相等、比较操作、或是否为空的条件函数:
CASE a WHEN b THEN c [WHEN d THEN e]... [ELSE f] END
Purpose: 把表达式与一个或多个可能的值进行比较,当发现匹配的时候返回对应的结果
Return type: 与初始化参数值相同的类型,除了 integer 会被提升为 BIGINT,浮点数(floating-point) 被提升为 DOUBLE;当插入到较小的数据类型列时应使用 CAST() 函数
CASE WHEN a THEN b [WHEN c THEN d]... [ELSE e] END
Purpose: 测试一组顺序的表达式是否为 true,返回第一个为 true 的表达式对应的结果
Return type: 与初始化参数值相同的类型,除了 integer 会被提升为 BIGINT,浮点数(floating-point) 被提升为 DOUBLE;当插入到较小的数据类型列时应使用 CAST() 函数
coalesce(type v1, type v2, ...)
Purpose: 返回第一个不为 NULL 的参数值,当参数全为 NULL 时返回 NULL.
Return type: 与初始化参数值相同的类型,除了 integer 会被提升为 BIGINT,浮点数(floating-point) 被提升为 DOUBLE;当插入到较小的数据类型列时应使用 CAST() 函数
if(boolean condition, type ifTrue, type ifFalseOrNull)
Purpose: 测试表达式的值,并返回对应的结果。为 true 时返回 ifTrue 的值,为 false 或 NULL 时返回 ifFalseOrNull 的值
Return type: 与 ifTrue 参数的类型相同
isnull(type a, type ifNotNull)
Purpose: 测试一个表达式是否为 NULL, 如果不是则返回表达式 a 的值。假如第一个参数为 NULL, 则返回第二个参数的值。等价于 Oracle 中的 nvl() 函数、MySQL 中的 ifnull() 函数
Return type: 与第一个参数的类型相同
nvl(type a, type ifNotNull)
Purpose: isnull() 函数的别名;Impala 1.1 中添加
Return type: 与第一个参数的类型相同
Impala 支持一下字符串函数:
ascii(string str)
Purpose: 返回输入参数第一个字符的数字 ASCII 码值
Return type: int
concat(string a, string b...)
Purpose: 字符串连接函数,返回所有输入参数顺序连接后的字符串
Return type: string
Usage notes: concat() 和 concat_ws() 适合连接同一行中的多个列的值,而 group_concat() 连接不同行中的值
concat_ws(string sep, string a, string b...)
Purpose: 带分隔符的连接函数,使用分隔符 sep 把第二个以后的参数连接到一起(注,如没有第三个参数 b,则返回 a 的值)
Return type: string
Usage notes: concat() 和 concat_ws() 适合连接同一行中的多个列的值,而 group_concat() 连接不同行中的值
find_in_set(string str, string strList)
Purpose: 集合查找函数,返回一个逗号分隔的字符串中指定字符串第一次出现的位置(位置从 1 开始)(Returns the position (starting from 1) of the first occurrence of a specified string within a comma-separated string)。假如输入参数之一为 NULL 则返回 NULL,字符串未找到和搜索的字符串包含逗号则返回 0(注,应当是返回在集合中的序号,如find_in_set('ab','aaa,ab,c')=2,并且查找的字符串必须与集合中的某一组值完全匹配,如find_in_set('a','aaa,ab,c')=0)
Return type: int
group_concat(string s [, string sep])
Purpose: 聚合函数,返回结果集中每一行对应的参数值连接到一起的字符串(Returns a single string representing the argument value concatenated together for each row of the result set)。假如指定了可选的分隔符,分隔符会添加到连接值之间( If the optional separator string is specified, the separator is added between each pair of concatenated values) (注,默认分隔符为逗号)
Return type: string
Usage notes: concat() 和 concat_ws() 适合连接同一行中的多个列的值,而 group_concat() 连接不同行中的值
默认返回一个覆盖整个结果集的字符串。为了包含结果集中其他列或值,或者为结果集的子集产生多个连接字符串,需要使用 GROUP BY 子句。
initcap(string str)
Purpose: 首字母大写函数
Return type: string
instr(string str, string substr)
Purpose: 字符串查找函数,返回字符串 substr 在字符串 str 中第一次出现的位置(从 1 开始)。假如输入参数之一为 NULL 则返回 NULL,字符串未找到则返回 0
Return type: int
length(string a)
Purpose: 字符串长度函数
Return type: int
locate(string substr, string str[, int pos])
Purpose: 字符串查找函数,返回字符串 substr 在字符串 str 中第一次出现的位置(从 1 开始)。可以指定开始查找的位置
Return type: int
lower(string a), lcase(string a)
Purpose: 小写转换函数
Return type: string
lpad(string str, int len, string pad)
Purpose: 左补足函数,根据第一个参数返回指定长度的字符串。如果传入的参数长度小于指定长度 len,则在左侧循环用 pad 序列补足到指定长度。如何长于 len,则从右侧截断。
Return type: string
ltrim(string a)
Purpose: 去除左侧空格
Return type: string
parse_url(string urlString, string partToExtract [, string keyToExtract])
Purpose: URL 解析函数。返回 URL 中指定的部分。可提取的部分(partToExtract)包括:'PROTOCOL', 'HOST', 'PATH', 'REF', 'AUTHORITY', 'FILE', 'USERINFO', 'QUERY'。传入的 partToExtract 参数必须大写。当请求 URL 中 QUERY 部分时,可以指定一个 key 仅获得查询字符串中键值对中该 key 的值(you can optionally specify a key to retrieve just the associated value from the key-value pairs in the query string)
Return type: string
Usage notes: 本函数对于传统数 Hadoop 使用案例解析网络日志很重要。比如,假如网络访问原始 URL 没有拆分到不同的列,你可以通过提取 'PATH' 或 'FILE' 部分的值来统计指定页面的访问数,或者通过提取 'QUERY' 部分对应的键来分析搜索词。
regexp_extract(string subject, string pattern, int index)
Purpose: 正则表达式提取函数,返回 index 指定的某一组正则表达式中匹配的用括号括起来值。组 0 表示整个匹配的字符串,组 1,2,等等分别对应第一组,第二组括号括起的位置(Returns the specified () group from a string based on a regular expression pattern. Group 0 refers to the entire extracted string, while group 1, 2, and so on refers to the first, second, and so on (...) portion)
Return type: string
Impala 的正则表达式语法符合 被用于 Boost 库的 POSIX Extended Regular Expression 语法。详细信息参见 the Boost documentation。它与 Perl, Python 等中的正则表达式非常相似。不支持 .*? 这种非贪婪模式的匹配。
因为在 impala-shell 中使用 \ 进行转义,所以在 impala-shell 中使用正则表达式时,用两个反斜杠 \\ 来表示正则表达式中的转义字符。你可能回喜欢使用等价的字符分类类名称(character class names)如 [[:digit:]] 来代替 你必须写成\\d 的\d。
例子:
下面的例子演示了组 0 匹配的完整的正则对应的字符串,超出()扩起的部分(This example shows how group 0 matches the full pattern string, including the portion outside any () group):
[localhost:21000] > select regexp_extract('abcdef123ghi456jkl','.*(\\d+)',0); +-----------------------------------------------------+ | regexp_extract('abcdef123ghi456jkl', '.*(\\d+)', 0) | +-----------------------------------------------------+ | abcdef123ghi456 | +-----------------------------------------------------+ Returned 1 row(s) in 0.11s
本例演示组 1 只匹配第一个 () 扩起的部分:
[localhost:21000] > select regexp_extract('abcdef123ghi456jkl','.*(\\d+)',1); +-----------------------------------------------------+ | regexp_extract('abcdef123ghi456jkl', '.*(\\d+)', 1) | +-----------------------------------------------------+ | 456 | +-----------------------------------------------------+ Returned 1 row(s) in 0.11s
Boost 正则表达式语法不支持 .*? 语法代表的非贪婪模式的匹配。本例中演示了一个以 .* 开头的正则表达式匹配了源字符串中尽可能长的部分,有效地进行了贪婪匹配并返回最右边一组的小写字符。一个都使用 .* 来匹配开头和结尾的正则表达式有两种可能的匹配模式,返回了第一种(最左侧的一组小写字符),有效地进行了一次非贪婪模式的匹配(This example shows how a pattern string starting with .* matches the longest possible portion of the source string, effectively serving as a greedy match and returning the rightmost set of lowercase letters. A pattern string both starting and ending with .* finds two potential matches of equal length, and returns the first one found (the leftmost set of lowercase letters), effectively serving as a non-greedy match.)。
[localhost:21000] > select regexp_extract('AbcdBCdefGHI','.*([[:lower:]]+)',1); +-------------------------------------------------------+ | regexp_extract('abcdbcdefghi', '.*([[:lower:]]+)', 1) | +-------------------------------------------------------+ | def | +-------------------------------------------------------+ Returned 1 row(s) in 0.12s [localhost:21000] > select regexp_extract('AbcdBCdefGHI','.*([[:lower:]]+).*',1); +---------------------------------------------------------+ | regexp_extract('abcdbcdefghi', '.*([[:lower:]]+).*', 1) | +---------------------------------------------------------+ | bcd | +---------------------------------------------------------+ Returned 1 row(s) in 0.11sregexp_replace(string initial, string pattern, string replacement)
Purpose: 正则表达式替换函数
Return type: string
Impala 的正则表达式语法符合 被用于 Boost 库的 POSIX Extended Regular Expression 语法。详细信息参见 the Boost documentation。它与 Perl, Python 等中的正则表达式非常相似。不支持 .*? 这种非贪婪模式的匹配。
因为在 impala-shell 中使用 \ 进行转义,所以在 impala-shell 中使用正则表达式时,用两个反斜杠 \\ 来表示正则表达式中的转义字符。你可能回喜欢使用等价的字符分类类名称(character class names)如 [[:digit:]] 来代替 你必须写成\\d 的\d。
例子:
下面列子演示了如何替换正则匹配的字符串为 replacement,其中 replacement 部分可以包括正则表达式中匹配的任意组的字符串的反向引用。反向引用序号从 1 开始,而且 \ 必须转义为 \\(These examples show how you can replace parts of a string matching a pattern with replacement text, which can include backreferences to any () groups in the pattern string. The backreference numbers start at 1, and any \ characters must be escaped as \\)。
替换匹配的字符串为新字符串 replacement:
[localhost:21000] > select regexp_replace('aaabbbaaa','b+','xyz'); +------------------------------------------+ | regexp_replace('aaabbbaaa', 'b+', 'xyz') | +------------------------------------------+ | aaaxyzaaa | +------------------------------------------+ Returned 1 row(s) in 0.11s
在原始字符串 bbb 两端添加尖括号(Replace a character pattern with substitution text that includes the original matching text):
[localhost:21000] > select regexp_replace('aaabbbaaa','(b+)','<\\1>'); +----------------------------------------------+ | regexp_replace('aaabbbaaa', '(b+)', '<\\1>') | +----------------------------------------------+ | aaa<bbb>aaa | +----------------------------------------------+ Returned 1 row(s) in 0.11s
删除所有非数字字符:
[localhost:21000] > select regexp_replace('123-456-789','[^[:digit:]]',''); +---------------------------------------------------+ | regexp_replace('123-456-789', '[^[:digit:]]', '') | +---------------------------------------------------+ | 123456789 | +---------------------------------------------------+ Returned 1 row(s) in 0.12s
repeat(string str, int n)
Purpose: 返回重复 n 次的 str 之后的字符串
Return type: string
reverse(string a)
Purpose: 字符串反转函数,返回以字符串 a 的反转结果
Return type: string
rpad(string str, int len, string pad)
Purpose: 右补足函数,根据第一个参数返回指定长度的字符串。如果传入的参数长度小于指定长度 len,则在右侧循环用 pad 序列补足到指定长度。如何长于 len,则从右侧截断
Return type: string
rtrim(string a)
Purpose: 右侧去空格函数,返回删除右侧空格后的输入参数
Return type: string
space(int n)
Purpose: 返回指定个数的空格字符串,repeat(' ',n) 的速记函数(Returns a concatenated string of the specified number of spaces. Shorthand for repeat(' ',n))
Return type: string
substr(string a, int start [, int len]), substring(string a, int start [, int len])
Purpose: 字符串截取函数,返回字符串从 start 位置之后的 len 长度的字符串,len 默认是最大长度。字符串的起始位置默认为 1(Returns the portion of the string starting at a specified point, optionally with a specified maximum length. The characters in the string are indexed starting at 1)
Return type: string
translate(string input, string from, string to)
Purpose: 字符串替换函数,返回输入的字符串 input 中包含的字符串 from 被替换为字符串 to 之后的字符串(Returns the input string with a set of characters replaced by another set of characters)
Return type: string
trim(string a)
Purpose: 去空格函数,去除字符串两端的空格。与同时执行 ltrim() 和 rtrim() 等价
Return type: string
upper(string a), ucase(string a)
Purpose: 字符串大写函数
Return type: string
Impala 支持以下不需要操作特定的列或数据类型的函数:
user()
Purpose: 返回当前连接到 impalad 守护进程的 Linux 用户名。通常在单一时间,在没有 FROM 查询中调用,用于展示在一个安全的上下文中认证设置应用情况;当你知道了登录的用户名,你可以检查用户所属的组,通过授权策略文件,你可以从组列表中检查对这些组哪些角色可用(Typically called a single time, in a query without any FROM clause, to understand how authorization settings apply in a security context; once you know the logged-in user name, you can check which groups that user belongs to, and from the list of groups you can check which roles are available to those groups through the authorization policy file)
Return type: string