SELECT ascii('20') AS result FROM system.dual;
复制
数学求值
ascii
ascii
函数语法 | 返回类型 | 描述 |
---|---|---|
ascii(A) |
INT |
返回 A 第一个字符的 ascii 值。A 可以是除了 BINARY 之外的任何基本类型,返回A第一个字符的ascii值。如果输入为Binary类型则报错。 |
参数说明:
-
A:输入需要进行转换的字符。不支持 BINARY 类型。
注意事项:
-
当参数 A 为 NULL 时,结果返回 NULL。
-
当参数 A 为空串时,结果返回 0。
使用示例:
返回示例:
+---------+ | result | +---------+ | 50 | +---------+
复制
format_number
函数语法 | 返回类型 | 描述 |
---|---|---|
format_number(x, d) |
Double |
返回指定格式的 x,按照五舍六入的规则返回 d 位小数位的 x。 |
参数说明:
-
x:需要修改小数位格式的数值。
-
d:返回的小数点后的位数。仅支持 tinyint、smallint、int、bigint 类型。
注意事项:
-
当参数 str 为 NULL 时结果返回 NULL。
-
当参数 str 为空时,结果返回 0。
使用示例:
SELECT format_number(100,2) AS result FROM system.dual;
复制
返回示例:
+---------+ | result | +---------+ | 100.00 | +---------+
复制
greatest
函数语法 | 返回类型 | 描述 |
---|---|---|
greatest(value1, value2, value3, ….) |
value的共有类型 |
返回所有 value 中最大的值 |
参数说明:
-
value:进行比较的参数,支持数值型及字符型。
注意事项:
-
如果是数字类型比较,返回类型所有参数的公共类型,返回其中的最大值。如果是字符类型比较,则是逐位比较。
-
当参数中出现 NULL 或空串时,结果返回 NULL。
使用示例:
SELECT greatest('10','9') AS result FROM system.dual LIMIT 1;
复制
返回示例:
+---------+ | result | +---------+ | 9 | +---------+
复制
md5
函数语法 | 返回类型 | 描述 |
---|---|---|
md5(str) |
STRING |
返回参数 str 的 MD5 哈希值。 |
参数说明:
-
str:计算 MD5 哈希值的参数,支持 STRING 型。
注意事项:
-
当参数 str 为 NULL 时,结果返回 NULL。
-
参数 str 为空串,结果返回固定值
d41d8cd98f00b204e9800998ecf8427e
。
使用示例:
SELECT md5("a") AS result FROM system.dual LIMIT 1;
复制
返回示例:
+-----------------------------------+ | result | +-----------------------------------+ | 0cc175b9c0f1b6a831c399e269772661 | +-----------------------------------+
复制
内容选取
concat
函数语法 | 返回类型 | 描述 |
---|---|---|
concat(a,b,c……) |
STRING |
合并输入的所有项。a 连接多个字符串,合并为一个字符串,可以接受任意数量的输入字符串,返回字符串类型。 |
参数说明:
-
a/b/c:需要进行合并的字符串,可以是任何基本类型数据。
注意事项:
-
当所有参数都为 NULL 时,结果返回 NULL。
使用示例:
SELECT concat(1,2,3) AS result FROM system.dual LIMIT 1;
复制
返回示例:
+---------+ | result | +---------+ | 123 | +---------+
复制
context_ngrams
函数语法 | 返回类型 | 描述 |
---|---|---|
context_ngrams(list_expr, array(substring1, substring2, …, null), k[, pf]) |
array<struct<string,double>> |
从给定一个字符串上下文中,返回字符串中出现频率在 Top-k 内,符合指定格式为 (string1, string2, …, null) 的词汇。 |
参数说明:
-
list_expr:较长的基础 STRING 字符串序列。支持
array(str)
或array(array(str1),array(str2),array(str3)…)
等字符串序列格式输入,其中 str 必须为 STRING 类型。 -
substring:子序列中的字符串,最少必须包含一个 NULL。
-
k:指定出现频率为 TOP-k 的子序列输出,仅支持 INT 型。
-
pf:可选参数,用于指定精度因子,仅支持 INT 型。
注意事项:
-
当参数 expr 为 sentences() 函数时,返回分词结果中与 ARRAY 中指定的单词一起出现(包括顺序)频率最高的 TOP-k 结果。
使用示例 1
-- 设置字符串常量默认为 STRING 类型 SET character.literal.as.string=true; SELECT context_ngrams(sentences('hello A!hello B,hi A,hello B'),array('hello',null),3) FROM system.dual;
复制
返回示例 1
+--------------------------------------------------------------------------+ | _c0 | +--------------------------------------------------------------------------+ | [{"ngram":["B"],"estfrequency":2.0},{"ngram":["A"],"estfrequency":1.0}] | +--------------------------------------------------------------------------+
复制
使用示例 2:
-- 设置字符串常量默认为 STRING 类型 SET character.literal.as.string=true; SELECT context_ngrams(array(array('hello','A'),array('hello','B'),array('hi','A'),array('hello','B')),array('hello',null),1);
复制
返回示例 2:
+---------------------------------------+ | _c0 | +---------------------------------------+ | [{"ngram":["B"],"estfrequency":2.0}] | +---------------------------------------+
复制
ngrams
函数语法 | 返回类型 | 描述 |
---|---|---|
ngrams(list_expr, N, K[, pf]) |
INT |
从给定一个字符串上下文中,返回从一组标记的句子的 Top-K 的 N 元语法词汇。 |
参数说明:
-
list_expr:基础 STRING 字符串序列,支持
array(str)
或array(array(str1),array(str2),array(str3)…)
等字符串序列格式输入,其中 str 必须为 STRING 类型。 -
N:指定提取序列的长度,仅支持 INT 型。
-
k:指定出现频率为 TOP-k 的子序列输出,仅支持 INT 型。
-
pf:可选参数指定精度因子,仅支持 INT 型。
注意事项:
-
与 sentences () 函数一起使用以分析非结构化自然语言文本。
-
与 collect () 函数一起使用以分析更通用的字符串数据。
使用示例 1:
SELECT ngrams(sentences(lower('twEet A')),2,100,1000) AS result FROM system.dual;
复制
返回示例 1:
+-----------------------------------------------+ | result | +-----------------------------------------------+ | [{"ngram":["tweet","a"],"estfrequency":1.0}] | +-----------------------------------------------+
复制
使用示例 2:
-- 设置字符串常量默认为 STRING 类型 SET character.literal.as.string=true; SELECT ngrams(array(array('313','dsc','dsc'),array('313','dsc','efv')),2,3);
复制
返回示例 2:
+-------------------------------------------------------------------------------------------------------------------------------------+ | _c0 | +-------------------------------------------------------------------------------------------------------------------------------------+ | [{"ngram":["313","dsc"],"estfrequency":2.0},{"ngram":["dsc","dsc"],"estfrequency":1.0},{"ngram":["dsc","efv"],"estfrequency":1.0}] | +-------------------------------------------------------------------------------------------------------------------------------------+
复制
concat_ws
函数语法 | 返回类型 | 描述 |
---|---|---|
concat_ws(SEP, A, B…) |
STRING |
以 SEP 为分隔把 A、B……合并起来。 |
参数说明:
-
SEP:字段间隔符,仅支持字符类型。
-
A/B:需要合并的字段,仅支持字符类型。
注意事项:
-
当需要合并的参数 A/B 为空串时,则按照空字符串进行合并;当参数为 NULL 时,则跳过该参数。
-
当间隔符参数 SEP 为空串时,直接对参数进行合并;当为 NULL 时,结果返回 NULL。
使用示例 1:
SELECT concat_ws('|','1','2','3') AS result FROM system.dual;
复制
返回示例 1:
+---------+ | result | +---------+ | 1|2|3 | +---------+
复制
使用示例 2:
SELECT concat_ws('|','1',space(0),'3') AS result_empty, concat_ws('|','1',null,'3') AS result_null;
复制
返回示例 2:
+---------------+--------------+ | result_empty | result_null | +---------------+--------------+ | 1||3 | 1|3 | +---------------+--------------+
复制
elt
函数语法 | 返回类型 | 描述 |
---|---|---|
elt(n, str[, str, …]) |
STRING |
返回参数中的第 n 个字符串参数。 |
参数说明:
-
n:需要返回的字符串位置数。支持 INT 型,或能隐式转换为 INT 的数据类型。
-
str:字符串,可以有多个。
注意事项:
-
当参数 n 大于字符串总数时,结果返回 NULL。
-
当任一参数 n 或 str 为 NULL 或空串时,结果返回 NULL。
使用示例:
SELECT elt(1, 'face', 'book') AS result FROM system.dual LIMIT 1;
复制
返回示例:
+---------+ | result | +---------+ | face | +---------+
复制
group_concat
函数语法 | 返回类型 | 描述 |
---|---|---|
group_concat(expr,separator) |
string |
返回每个组中非 NULL 字符串 expr 的连接值组,并用分隔符 separator 进行间隔拼接。 |
参数说明:
-
expr:需要进行拼接的字符串序列。
-
separator:指定分隔符。
注意事项:
-
当参数 separator 为 NULL,结果返回 NULL;若为空,结果返回字符串 expr 直接拼接的结果。
-
当参数 expr 为 NULL 时结果返回 NULL;若为空,结果返回空。
使用示例:
查找 user_info 表中同一种 acc_level 类型的身份证号,并用逗号拼接返回结果。
SELECT acc_level, group_concat(citizen_id,",") FROM user_info GROUP BY acc_level;
复制
返回示例:
+------------+-----------------------------------------------------------+ | acc_level | _c1 | +------------+-----------------------------------------------------------+ | A | 340811199211252278,522632199301029404,140400198711012307 | | B | 420529198911075631 | | C | 511521198705077435,230801197908126178,330683198005210864 | | D | 310230197912126559,420822199001119507 | | E | 460100198902070313 | +------------+-----------------------------------------------------------+
复制
left
函数语法 | 返回类型 | 描述 |
---|---|---|
left(str, n) |
STRING |
返回 str 中从左数长度为 n 的子字符串。 |
参数说明:
-
str:字符串。
-
n:截取的前 n 位,支持正整数。
注意事项:
-
当任一参数 str 为 NULL 时结果返回 NULL;若为空时,结果返回空。
使用示例:
SELECT left('bigdata', 5) AS result FROM system.dual LIMIT 1;
复制
返回示例:
+---------+ | result | +---------+ | bigda | +---------+
复制
right
函数语法 | 返回类型 | 描述 |
---|---|---|
right(str, n) |
STRING |
返回 str 中从右数长度为 n 的子字符串。 |
参数说明:
-
str:支持字符串类型。
-
n:需要输出的位数,支持正整数。
注意事项:
-
当任一参数 str 为 NULL 时结果返回 NULL;若为空时,结果返回空。
使用示例:
SELECT right('bigdata', 4) AS result FROM system.dual LIMIT 1;
复制
返回示例:
+---------+ | result | +---------+ | data | +---------+
复制
lpad
函数语法 | 返回类型 | 描述 |
---|---|---|
lpad(str, len, pad) |
STRING |
用 pad 参数的值,在左方依次补全 str 为 len 长度。如果 len 的值小于 str 的长度,则返回从左截取 len 长度的字符。 |
参数说明:
-
str:被补齐的字符串,支持字符串类型。
-
len:补齐之后的字符长度,支持 INT 类型或截取整数位的小数。
-
pad:进行补齐的字符,支持字符串类型。
注意事项:
-
当参数 str 或 pad 为 NULL 时,结果返回 NULL。
使用示例:
SELECT lpad('123456789',11,'a') AS result FROM system.dual;
复制
返回示例:
+--------------+ | result | +--------------+ | aa123456789 | +--------------+
复制
rpad
函数语法 | 返回类型 | 描述 |
---|---|---|
rpad(str, len, pad) |
STRING |
用 pad 参数的值,在右方补全 str 为 len 长度。如果 len 的值小于 str 的长度,则返回从右截取 len 长度的字符。 |
参数说明:
-
str:被补齐的字符串,支持字符串类型。
-
len:补齐之后的字符长度,支持 INT 类型或截取整数位的小数。
-
pad:进行补齐的字符,支持字符串类型。
注意事项:
-
当参数 str 或 pad 为 NULL 时,结果返回 NULL。
使用示例:
SELECT rpad('123456789',11,'a') AS result FROM system.dual;
复制
返回示例:
+--------------+ | result | +--------------+ | 123456789aa | +--------------+
复制
ltrim
函数语法 | 返回类型 | 描述 |
---|---|---|
ltrim(A) |
STRING |
去掉字符左侧的空格。 |
参数说明:
-
A:需要去除左侧空格的字符串。
注意事项:
-
当 A 为 NULL 或只包含空格的字符串时,结果返回 NULL;若为空,则返回空。
使用示例:
SELECT ltrim(' bigdata ') AS result FROM system.dual LIMIT 1;
复制
返回示例:
+-----------------------+ | result | +-----------------------+ | bigdata | +-----------------------+
复制
rtrim
函数语法 | 返回类型 | 描述 |
---|---|---|
rtrim(string A) |
STRING |
去掉字符右侧的空格 |
参数说明:
-
A:需要去除右侧空格的字符串。
注意事项:
-
当 A 为 NULL 或只包含空格的字符串时,结果返回 NULL;若为空,则返回空。
使用示例:
SELECT rtrim(' bigdata ') AS result FROM system.dual LIMIT 1;
复制
返回示例:
+--------------+ | result | +--------------+ | bigdata | +--------------+
复制
parse_url
函数语法 | 返回类型 | 描述 |
---|---|---|
parse_url(urlString, part) |
INT |
返回 URL 中指定的部分。字符类型的 part |
参数说明:
-
urlString:URL 字符串,只支持 STRING 类型。
-
part:STRING 类型参数指定返回 URL 的部分。可选取值有(大小写完全一致):'HOST', 'PATH', 'QUERY', 'REF', 'PROTOCOL', 'AUTHORITY', 'FILE', 'USERINFO',否则返回 NULL。
注意事项:
-
当参数 urlString 为 NULL 或空时,结果返回 NULL。
使用示例:
SELECT parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'HOST') AS result FROM system.dual LIMIT 1;
复制
返回示例:
+---------------+ | result | +---------------+ | facebook.com | +---------------+
复制
repeat
函数语法 | 返回类型 | 描述 |
---|---|---|
repeat(str, n) |
STRING |
返回 n 个 str 连在一起的字符串。 |
参数说明:
-
str:需要重复的字符串,支持除了 Boolean 之外的任何基本类型。
-
n:指定重复的次数,支持 INT 型。
注意事项:
-
当参数 str 为 NULL 时,结果返回 NULL;为空时,结果返回空。
-
当参数 n 为 NULL 时,结果返回 NULL。
使用示例:
SELECT repeat(1, 10) AS result FROM system.dual;
复制
返回示例:
+-------------+ | result | +-------------+ | 1111111111 | +-------------+
复制
replace
函数语法 | 返回类型 | 描述 |
---|---|---|
replace(input, search, replace) |
字符串 |
将字符串 input 中的所有指定子串 search 替换成 replace。 |
参数说明:
-
input:要替换的字符串,支持 STRING 类型。
-
search:要被替换的子串,支持 STRING 类型。
-
replace:替换的新子串,支持 STRING 类型。
注意事项:
-
当参数 input 为 NULL 时,结果返回 NULL;为空时,结果返回空。
-
当参数 search 为 NULL 或空或不存在于参数 input 时,结果返回 input 本身。
-
当参数 replace 为 NULL 或空时,表示以空串替换 search。
使用示例:
SELECT REPLACE('Hello, World!', 'World', 'inceptor') AS result;
复制
返回示例:
+-------------------+ | result | +-------------------+ | Hello, inceptor! | +-------------------+
复制
sentences
函数语法 | 返回类型 | 描述 |
---|---|---|
sentences(str[, lang][, country]) |
Array(Array(STRING)) |
给一个包含自然语言句子的字符类型,在合适的位置分词,返回一些包含 STRING 词组的数组。 |
参数说明:
-
str:需要进行拆分的自然语言句子字符串。
-
lang:可选参数,设置语言。
-
country:可选参数,设置国家。
注意事项:
-
当参数 str 为 NULL 时,结果返回 NULL;若为空,结果返回空数组
[]
。
使用示例:
SELECT sentences('Hello there! How are you?') AS result FROM system.dual LIMIT 1;
复制
返回示例:
+------------------------------------------+ | result | +------------------------------------------+ | [["Hello","there"],["How","are","you"]] | +------------------------------------------+
复制
space
函数语法 | 返回类型 | 描述 |
---|---|---|
space(n) |
STRING |
返回 n 个空格的字符 |
参数说明:
-
n:仅支持 INT 型。
注意事项:
-
当参数 n 为 NULL 时,结果返回 NULL。
使用示例:
SELECT space(5) AS result FROM system.dual LIMIT 1;
复制
返回示例:
+---------+ | result | +---------+ | | +---------+
复制
split
函数语法 | 返回类型 | 描述 |
---|---|---|
split(str, pat) |
Array(STRING) |
按指定分隔符分割字符。把字符串 str 按 pat 分隔,返回 STRING 数组。 |
参数说明:
-
str:需要进行分割的字符串。
-
pat:分隔符字符,必须包含在中括号 [] 内,如
"[,]"
。
注意事项:
-
当参数 pat 为 NULL 时,结果返回 NULL;若为空,结果返回由 str 单个字符组成的数组。
-
当参数 str 为 NULL 时,结果返回 NULL;若为空串,结果返回空串数组
[""]
。 -
若参数 str 中不存在分隔符 pat,则返回 str 自身。
使用示例:
SELECT split('pro-duct','[-]') AS result FROM system.dual;
复制
返回示例:
+-----------------+ | result | +-----------------+ | ["pro","duct"] | +-----------------+
复制
split_part
函数语法 | 返回类型 | 描述 |
---|---|---|
split_part(string, delimiter, field) |
字符串 |
将字符串 string 按照指定的分隔符 delimiter 进行分割,并返回指定位置 field 的分割结果。 |
参数说明:
-
string:要分割的字符串。
-
delimiter:分隔符字符串,用于将字符串进行分割。
-
field:指定要返回的分割结果的位置,从 1 开始计数。
注意事项:
-
当参数 delimiter 为 NULL 时,结果返回 NULL;若为空串,结果返回 string 的第 field 个字符。
-
当参数 string 为 NULL 时,结果返回 NULL;若为空串,结果返回空。
-
当参数 field 为 NULL 或空串时,结果返回 NULL。
使用示例:
使用逗号作为分隔符,将字符串 apple,banana,cherry
分割成三个部分,并返回第二个位置的分割结果,即 banana
。
SELECT split_part('apple,banana,cherry', ',', 2) AS result;
复制
返回示例:
+---------+ | result | +---------+ | banana | +---------+
复制
substr/substring
函数语法 | 返回类型 | 描述 |
---|---|---|
substr(A, start [, length]) |
STRING |
返回 A 从 start 位置开始的子字符串,若指定 length 则返回从 start 开始,长度为 length 的子字符串。 |
substring(A, start [, length]) |
参数说明:
-
A:需要进行截取的字符串。
-
start:指定开始的位置,支持 INT 型。
-
length:指定返回的字符长度,支持 INT 型。
注意事项:
-
若参数 A 为 NULL,则结果返回 NULL;若为空串,则结果返回空。
-
若参数 start 为 NULL 或空串,则结果返回 NULL。
-
若参数 A 的字符数小于 start,则结果返回 NULL。
-
当参数 length 大于 A 从 start 开始的子串的字符数时,结果返回 A 中从第 start 个字符开始的子串。
使用示例:
SELECT substr('bigdata',6,2) AS substr_result, substring('bigdata',6,2) AS substring_result FROM system.dual LIMIT 1;
复制
返回示例:
+----------------+-------------------+ | substr_result | substring_result | +----------------+-------------------+ | ta | ta | +----------------+-------------------+
复制
substr_udf/substring_udf
函数语法 | 返回类型 | 描述 |
---|---|---|
substr_udf(string, start[, len]) |
字符串 |
从指定的起始位置 start 开始,截取字符串 string 中指定长度 len 的字符串。 |
substring_udf(string, start[, len]) |
参数说明:
-
string:要截取子字符串的源字符串。
-
start:指定截取的起始位置,从 1 开始计数。
-
len:可选参数,用于指定返回截取的长度,支持 INT 型。
注意事项:
-
若参数 string 为 NULL,则结果返回 NULL;若为空串,则结果返回空。
-
若参数 start 或 len 为 NULL 时,结果返回 NULL。
-
若参数 string 的字符数小于 start,则结果返回空。
-
当参数 len 大于 string 从 start 开始子串的字符数时,结果返回 string 中从第 start 个字符开始的子串。
使用示例:
从字符串 Hello, World!
中截取从第 8 个字符开始,长度为 5 的子字符串,即 World
。
SELECT substr_udf('Hello, World!', 8, 5) AS result_str, substring_udf('Hello, World!', 8, 5) AS result_string;
复制
返回示例:
+-------------+----------------+ | result_str | result_string | +-------------+----------------+ | World | World | +-------------+----------------+
复制
substrb
函数语法 | 返回类型 | 描述 |
---|---|---|
substrb(str, n[, len]) |
STRING |
返回 str 中从第 n 个字符开始的子字符串,如果 n 是负数,则返回从倒数第 n 个字符开始的子串。 |
参数说明:
-
str:需要进行子串提取的字符串。
-
n:指定子字符串开始的位置,支持 NUMERIC 类型。若为小数,则截取整数部分进行计算;若为 0,则从第 1 个字符开始。
-
len:可选参数,用于指定返回的子字符串的长度,支持 NUMERIC 类型。若为小数,则截取整数部分进行计算
注意事项:
-
当参数 str 为 NULL 时,结果返回 NULL;为空串,则结果返回空。
-
当参数 n 或 len 为 NULL 或空串时,结果返回 NULL。
-
当参数 str 的字符数小于正数 n 时,结果返回空;当参数 str 的字符数小于负数 n 的绝对值时,结果返回 NULL。
-
当参数 len 大于 str 从 n 开始子串的字符数时,结果返回 str 中从第 n 个字符开始的子串。
使用示例 1
SELECT substrb('Facebook', 1) AS result FROM system.dual LIMIT 1;
复制
返回示例 1
+-----------+ | result | +-----------+ | Facebook | +-----------+
复制
使用示例 2
SELECT substrb('Facebook', -1) AS result FROM system.dual LIMIT 1;
复制
返回示例 2
+---------+ | result | +---------+ | k | +---------+
复制
使用示例 3
SELECT substrb('Facebook', 1, 2) AS result FROM system.dual LIMIT 1;
复制
返回示例 3
+---------+ | result | +---------+ | Fa | +---------+
复制
使用示例 4
SELECT substrb('Facebook', 2, 8) AS result FROM system.dual LIMIT 1;
复制
返回示例 4
+----------+ | result | +----------+ | acebook | +----------+
复制
substrb_udf
函数语法 | 返回类型 | 描述 |
---|---|---|
substrb_udf(string, start[, length]) |
字符串 |
从字符串 string 中提取指定位置 start 开始的指定长度 length 的字节子串。 |
参数说明:
-
string:要提取子串的字符串。
-
start:起始位置,从 1 开始计数的 INT 型。
-
length:可选参数,设置要提取的字节长度。
注意事项:
-
当参数 string 为 NULL 时,结果返回 NULL;为空串,则结果返回空。
-
当参数 start 或 length 为 NULL 时,结果返回 NULL。
-
当参数 string 的字节数小于 start 时,结果返回空。
-
当参数 length 大于 string 从 start 开始子串的字符数时,结果返回 string 中从第 start 个字符开始的子串。
使用示例:
从字符串 Hello 世界
中的第 7 个字节开始,提取 6 个字节长度的子串。
SELECT substrb_udf('Hello 世界!',7, 6) AS result;
复制
返回示例:
+---------+ | result | +---------+ | 世界 | +---------+
复制
title
函数语法 | 返回类型 | 描述 |
---|---|---|
title (expr) |
STRING |
返回表达式中内容作为输出信息的标题。 |
参数说明:
-
expr:表达式,可填写为列名。
注意事项:
-
当参数 expr 为 NULL 时,结果返回 NULL;为空串时,返回空串。
使用示例:
select title("Price"), price from transactions limit 2;
复制
返回示例:
+----------+--------+ | _c0 | price | +----------+--------+ | 'Price' | 7.52 | | 'Price' | 6.36 | +----------+--------+
复制
translate
函数语法 | 返回类型 | 描述 |
---|---|---|
translate(input, from, to) |
STRING |
用指定字符 to 替换目标字符串 input 中的 from 字符。 |
参数说明:
-
input:需要进行字符串替换的目标字符,支持 STRING、CHAR(n)、VARCHAR(n) 等字符串类型。
-
from:被替换的字符串,支持 STRING、CHAR(n)、VARCHAR(n) 等字符串类型。
-
to:指定替换的字符,支持 STRING、CHAR(n)、VARCHAR(n) 等字符串类型。
注意事项:
-
如果参数 to 的长度比 from 短,那么 from 中多出来的位置的字符会在输出中被移除。
-
参数 input 为 NULL 时,结果返回 NULL;为空串时,结果返回空。
-
参数 from 为 NULL 时,结果返回 NULL;为空时,输出 input 自身。
-
参数 to 为 NULL 时,结果返回 NULL;为空时,则在输出中移除 input 中的 from 字符。
使用示例:
SELECT translate('abcdef', 'adc', '19') AS result FROM system.dual LIMIT 1;
复制
返回示例:
+---------+ | result | +---------+ | 1b9ef | +---------+
复制
trim
函数语法 | 返回类型 | 描述 |
---|---|---|
trim(s) |
STRING |
去掉字符左右的空格 |
参数说明:
-
s:需要去除左右空格的字符串。
注意事项:
-
参数 s 为 NULL 时,结果返回 NULL;为空串,结果返回空。
使用示例:
SELECT trim(' bigdata ') AS result FROM system.dual LIMIT 1;
复制
返回示例:
+----------+ | result | +----------+ | bigdata | +----------+
复制
类型/形式转换
asciistr
函数语法 | 返回类型 | 描述 |
---|---|---|
asciistr(expr) |
STRING |
将字符串转换为 ASCII 格式并返回。 |
参数说明:
-
expr:要转换的字符串或表达式。
注意事项:
-
当参数 expr 为空串时,结果返回空。
使用示例:
SELECT asciistr('Inceptor 数据库') AS result;
复制
返回示例:
+--------------------------+ | result | +--------------------------+ | Inceptor\6570\636E\5E93 | +--------------------------+
复制
base64
函数语法 | 返回类型 | 描述 |
---|---|---|
base64(A) |
INT |
把 BINARY 转化为 Base64 字符。A只可以是Binary类型的数据,返回A的Base64编码格式的值。 |
参数说明:
-
A:需要转化为 Base64 格式的字符串,只支持 BINARY 类型。
注意事项:
-
当参数 A 为 NULL 时,结果返回 NULL。
使用示例:
SELECT base64(binary('1')) AS result FROM system.dual;
复制
返回示例:
+---------+ | result | +---------+ | MQ== | +---------+
复制
unbase64
函数语法 | 返回类型 | 描述 |
---|---|---|
unbase64(str) |
BINARY |
把 base64 格式转化为 BINARY。 |
参数说明:
-
str:需要转化为 BINARY 格式的字符串,支持 base64 格式的字符串类型。
注意事项:
-
当参数 str 为 NULL 时,结果返回 NULL;为空串时,结果返回空。
使用示例:
SELECT unbase64(base64(binary('bigdata'))) AS result FROM system.dual LIMIT 1;
复制
返回示例:
+----------+ | result | +----------+ | bigdata | +----------+
复制
chr
函数语法 | 返回类型 | 描述 |
---|---|---|
chr(A) |
STRING |
返回整型的 char 值。输入只能为 INT,字符编码格式为内置的 unicode。 |
参数说明:
-
A:需要转化为 Base64 格式的字符串,只支持 BINARY 类型。
注意事项:
-
当参数 A 为 NULL 时,结果返回 NULL。
使用示例:
SELECT chr(123) AS result FROM system.dual;
复制
返回示例:
+---------+ | result | +---------+ | { | +---------+
复制
decode_char
函数语法 | 返回类型 | 描述 |
---|---|---|
decode_char (binary, str) |
见描述 |
用 str 编码方式把 binary 转换为字符返回。 |
参数说明:
-
binary:二进制字符。
-
str:指定编码方式。
使用示例:
SELECT decode_char(binary('name'), 'UTF-8') AS result FROM system.dual LIMIT 1;
复制
返回示例:
+---------+ | result | +---------+ | name | +---------+
复制
digits
函数语法 | 返回类型 | 描述 |
---|---|---|
digits(number) |
STRING |
将参数 number 转换成 STRING 返回。 |
参数说明:
-
number:支持任何数值类型。如果是整数,会按类型将位数补足。
使用示例:
SELECT digits(4) AS result FROM system.dual LIMIT 1;
复制
返回示例:
+-------------+ | result | +-------------+ | 0000000004 | +-------------+
复制
encode
函数语法 | 返回类型 | 描述 |
---|---|---|
encode(str_src, str_charset) |
STRING |
对指定的字符串执行编码操作并返回编码后的结果。 |
参数说明:
-
str_src:要进行编码的字符或表达式,只支持 STRING 或 VARCHAR(n) 类型。
-
str_charset:编码方式,支持 US_ASCII、ISO-8859-1、UTF-8、UTF-16BE、UTF-16LE 和 UTF-16。
注意事项:
-
当参数 str_src 为空串时,结果返回空。
使用示例:
SELECT encode(trans_type,"UTF-8") AS result FROM transactions LIMIT 2;
复制
返回示例:
+---------+ | result | +---------+ | s | | s | +---------+
复制
initcap
函数语法 | 返回类型 | 描述 |
---|---|---|
initcap(str) |
STRING |
将字符串 str 中所有词的首字母大写,其他字母小写。 |
参数说明:
-
str:支持字符串类型。
注意事项:
-
当 str 为 NULL 时,结果返回 NULL;为空串,则返回空。
使用示例:
SELECT initcap('bIgData rockS!') AS result FROM system.dual LIMIT 1;
复制
返回示例:
+-----------------+ | result | +-----------------+ | Bigdata Rocks! | +-----------------+
复制
lower/lcase
函数语法 | 返回类型 | 描述 |
---|---|---|
lower(A) 或 lcase(A) |
STRING |
把 A 中字母都转化为小写 |
参数说明:
-
A:需要转换小写字母格式的字符串。
注意事项:
-
当参数 A 为 NULL 时,结果返回 NULL;若为空串,则返回空。
使用示例:
SELECT lower('A') AS result_lower, lcase('A') AS result_lcase FROM system.dual;
复制
返回示例:
+---------------+---------------+ | result_lower | result_lcase | +---------------+---------------+ | a | a | +---------------+---------------+
复制
upper/ucase
函数语法 | 返回类型 | 描述 |
---|---|---|
upper(A) 或 ucase(A) |
STRING |
把字符中的字母都转化为大写,其他字符不变。 |
参数说明:
-
A:需要转换字母大写的字符串。
注意事项:
-
当参数 A 为 NULL 时,结果返回 NULL;若为空串,则返回空。
使用示例:
SELECT upper('bigdata') AS result_upper, ucase('bigdata') AS result_ucase FROM system.dual LIMIT 1;
复制
返回示例:
+---------------+---------------+ | result_upper | result_ucase | +---------------+---------------+ | BIGDATA | BIGDATA | +---------------+---------------+
复制
nlssort
函数语法 | 返回类型 | 描述 |
---|---|---|
nlssort(chars, 'nls_sort = rule') |
STRING |
根据指定的字符集排序规则 rule 对输入字符串 chars 进行排序,并返回结果。 |
参数说明:
-
chars:要排序的字符串,可以是表中的某一列。
-
rule:字符集排序规则,常用的规则例如:
-
BINARY:二进制排序,按照字符串的二进制编码进行排序,区分大小写。
-
BINARY_CI:二进制排序,不区分大小写。
-
注意事项:
-
参数 chars 为空串,则结果返回空。
使用示例:
SELECT stock_id, price, amount FROM transactions ORDER BY nlssort('stock_id', 'NLS_SORT = BINARY') LIMIT 6;
复制
返回示例:
+------------+--------+---------+ | stock_id | price | amount | +------------+--------+---------+ | GL2547626 | 6.36 | 800 | | CP7629713 | 10.31 | 400 | | CX5397790 | 4.5 | 1000 | | CA2789982 | 6.12 | 100 | | BY8490909 | 68.43 | 100 | | XJ9717497 | 5.25 | 1000 | +------------+--------+---------+
复制
printf
函数语法 | 返回类型 | 描述 |
---|---|---|
printf(String_format, Obj… args) |
STRING |
返回指定输出格式的字符。 |
使用示例:
SELECT printf("Hello World %d %s", 100, "days") AS result FROM system.dual LIMIT 1;
复制
返回示例:
+-----------------------+ | result | +-----------------------+ | Hello World 100 days | +-----------------------+
复制
rawtohex
函数语法 | 返回类型 | 描述 |
---|---|---|
rawtohex(expr) |
STRING |
将指定的字符串转换为 16 进制的字符串。 |
参数说明:
-
expr:要转换的字符串或表达式,也支持数值类型(如 INT)。
使用示例:
将 transactions 表中,交易类型(trans_type)列中的值转换为 16 进制字符串。
SELECT rawtohex(trans_type) AS result FROM transactions LIMIT 3;
复制
返回示例:
+---------+ | result | +---------+ | 73 | | 73 | | 62 | +---------+
复制
reverse
函数语法 | 返回类型 | 描述 |
---|---|---|
reverse(A) |
STRING |
把字符 A 转置 |
参数说明:
-
A:需要进行转换的参数,支持基础数据类型。
注意事项:
-
当参数 A 为 NULL 时,结果返回 NULL;若为空串,则结果返回空。
使用示例:
SELECT reverse('bigdata') AS result FROM system.dual LIMIT 1;
复制
返回示例:
+----------+ | result | +----------+ | atadgib | +----------+
复制
str_to_map
函数语法 | 返回类型 | 描述 |
---|---|---|
str_to_map(text[, delimiter1, delimiter2]) |
Map |
把字符转化为 MAP。 |
参数说明:
-
text:需要转换为 MAP 格式的字符串。
-
delimiter1:可选分隔符参数,用于分隔不同组的 K-V。
-
delimiter2:可选分隔符参数,用于分隔每一组 K-V。
注意事项:
-
当参数 text 为空串时,结果返回
{"":null}
。
使用示例:
SELECT str_to_map('a-b=c-d','=','-') AS result FROM system.dual;
复制
返回示例:
+--------------------+ | result | +--------------------+ | {"a":"b","c":"d"} | +--------------------+
复制
to_number
函数语法 | 返回类型 | 描述 |
---|---|---|
to_number(value, format_mask) |
Decimal |
把字符串转化为 NUMBER 类型,按照指定的格式来格式化字符,支持字符串类型。 |
参数说明:
-
value:需要进行转换的字符串。
-
format_mask:指定输入值 value 的格式,便于系统识别。
注意事项:
-
当参数 value 为 NULL、空串或无法转换为 NUMBER 格式时,结果返回 NULL。
使用示例:
SELECT to_number('1239.1', '9999.0') AS result FROM system.dual LIMIT 1;
复制
返回示例:
+---------+ | result | +---------+ | 1239.1 | +---------+
复制
to_char
函数语法 | 返回类型 | 描述 |
---|---|---|
to_char(date, pattern) |
STRING |
返回指定格式的日期字符。将 'yyyy-MM-dd HH:mm:ss' 格式的字符串转换为 pattern 格式的字符串; |
to_char(number [,format]) |
STRING |
返回指定格式的数字字符。将数字 number 转成字符格式,或按照一定 format 转换为字符串。 |
参数说明:
-
date:日期型参数。
-
pattern:需要转换的日期格式,支持字符串型。
-
number:数字型参数。
-
format:可选参数,指定将数字参数 number 转换的字符串格式。若不指定,默认为
注意事项:
-
当任意参数为 NULL,则结果返回 NULL。
-
当参数 pattern 为空时,则转换格式为
mm/dd/yy mm:ss AM|PM
。 -
当参数 date/numeber 或 format 为空串时,结果返回 NULL。
使用示例:
SELECT to_char('2015-01-30','yyyyMMdd') AS result FROM system.dual;
复制
返回示例:
+-----------+ | result | +-----------+ | 20150130 | +-----------+
复制
to_semiangle
函数语法 | 返回类型 | 描述 |
---|---|---|
to_semiangle(string) |
STRING |
把全角字符转化为半角字符 |
参数说明:
-
string:需要转换的字符串
注意事项:
-
当参数 string 为 NULL 时,结果返回 NULL;为空串时,结果返回空。
使用示例:
SELECT to_semiangle('bigdata') AS result FROM system.dual LIMIT 1;
复制
返回示例:
+----------+ | result | +----------+ | bigdata | +----------+
复制
trunc
函数语法 | 返回类型 | 描述 |
---|---|---|
trunc(date, format) |
STRING |
返回日期的指定格式。 |
参数说明:
-
date:日期参数,必须为 'yyyy-mm-dd' 或 'yyyy-mm-dd hh:mm:ss' 格式,否则返回 NULL。
-
format:指定返回的日期精度并返回特定日期,有以下取值,否则返回 NULL:
-
当 format 为 'yyyy' 或 'yy',返回该年第一天的日期;
-
当 format 为 'mm',返回该月第一天;
-
当 format 为 'dd',得到日期;
-
当 format 为 'd',得到该周第一天的日期;
-
当 format 为 'hh',得到精确到小时的时间;
-
当 format 为 'mi',得到精确到分钟的时间。
-
注意事项:
-
当参数 date 为 NULL 或空串,或参数 format 为空串时,结果返回 NULL。
使用示例:
SELECT trunc('2015-01-30 11:11:11','hh') AS result FROM system.dual LIMIT 1;
复制
返回示例:
+----------------------+ | result | +----------------------+ | 2015-01-30 11:00:00 | +----------------------+
复制
加密解密
正则表达式相关
Inceptor 中的正则表达式行为和标准正则表达式基本一致,其中需要注意以下三点区别:
-
标准正则如果需要一个转义符 "\",Inceptor 中的写法是两个 "\\",如:
\\2
。 -
左大括号 "{" 在标准正则中不需要转义,而 Inceptor 需要转义,如:
\{
。 -
我们推荐任何字符都加上转义,结果也仍然保持正确。
regex_substr
函数语法 | 返回类型 | 描述 |
---|---|---|
regex_substr (source, pattern [,pos [,occurrence [, match_parameter ] ] ]) |
见描述 |
将 source 中和 pattern 第一个发生匹配的子字符串返回。 REGEXP_SUBSTR 扩展了 SUBSTR 函数的功能,允许在字符串中搜索正则表达式模式。 |
参数说明:
-
source:需要进行正则匹配的文本。
-
pattern:正则表达式。
-
pos:可选参数,用于指定从 source 中的第几个字符开始匹配,支持正整数。若不指定则默认是 1,意味搜索从 source 的第一个字符开始。
-
occurrence:可选参数,用于指定返回第几个发生匹配的子字符串,支持正整数。若不指定则默认是 1,这意味着搜索 pattern 的第一次出现。
-
match_parameter:可选参数,用于指定匹配方式,分别有如下方式及对应取值:
-
"i":大小写不敏感;
-
"c":大小写敏感;
-
"n":将 . (通配符)和换行符匹配,默认为不匹配;
-
"m":将 source 作为多行来处理,将 ^ 作为行开头,$ 作为行结尾;
-
"x":忽略空格,默认空白字符匹配自身。
-
注意事项:
-
当参数 source 为 NULL 或空串时,结果返回 NULL。
-
当参数 pattern 为 NULL 时,结果返回 NULL;为空串,则结果为空。
使用示例:
SELECT regex_substr('Road Guiping, Xuhui District, SH',',[^,]+,') AS result FROM system.dual LIMIT 1;
复制
返回示例:
+--------------------+ | result | +--------------------+ | , Xuhui District, | +--------------------+
复制
regexp_extract
函数语法 | 返回类型 | 描述 |
---|---|---|
regexp_extract(subject, pattern, index) |
STRING |
通过下标返回正则表达式指定的部分。 |
参数说明:
-
subject:需要进行正则转换的文本。
-
pattern:正则表达式。
-
index:0 表示返回整个符合正则表达式对应的全部结果;1 表示返回正则表达式中第一个对应的结果;以此类推。
使用示例:
SELECT regexp_extract('foothebar', 'foo(.*?)(bar)', 0) AS result FROM system.dual;
复制
返回示例:
+------------+ | result | +------------+ | foothebar | +------------+
复制
regexp_replace
函数语法 | 返回类型 | 描述 |
---|---|---|
regexp_replace(initial_string, pattern, replacement[, position[, occurrence]]) |
INT |
用 replacement 替换 initial_string 中与正则表达式 pattern 匹配的所有子字符串。 |
参数说明:
-
initial_string:初始字符串。
-
pattern:正则表达式。
-
replacement:替换的字符串。
-
position:可选参数,指定从 initial_string 中的哪个字符开始搜索,支持正整数取值。若不指定则默认是 1,表示从 initial_string 的第一个字符开始搜索。
-
occurrence:可选参数,表示替换操作的发生。如果指定 0,则将替换所有匹配项。如果指定一个正整数 n,则替换第 n 次出现的匹配项。
使用示例:
SELECT regexp_replace('foothebarfoobar', 'foo(.*?)(bar)', 'num', 1, 2) AS result FROM system.dual LIMIT 1;
复制
返回示例:
+---------------+ | result | +---------------+ | foothebarnum | +---------------+
复制
regexp_like
函数语法 | 返回类型 | 描述 |
---|---|---|
regexp_like(subject, pattern) |
BOOLEAN |
检查字符串 subject 是否匹配正则表达式 pattern。如果匹配,则返回 true,否则返回 false。 |
参数说明:
-
subject:要检查的字符串。
-
pattern:要匹配的正则表达式。
使用示例:
SELECT regexp_like('Hello, World!', 'H*') AS result;
复制
返回示例:
+--------+ | result | +--------+ | true | +--------+
复制
位置相关
find_in_set
函数语法 | 返回类型 | 描述 |
---|---|---|
find_in_set(str, strlist) |
INT |
返回字符串 str 第一次在 strlist 出现的位置。 |
参数说明:
-
str:需要查询位置的字符串。
-
strlist:被查查询的对象,其中的字符串之间以逗号 ',' 分隔。
注意事项:
-
如果任一参数为 NULL,则结果返回 NULL。若任一为空串,则结果返回 0。
-
如果参数 str 中包含逗号,则结果返回 0。
使用示例:
SELECT find_in_set('4','1,2,3,4') AS result FROM system.dual;
复制
返回示例:
+---------+ | result | +---------+ | 4 | +---------+
复制
get_json_object
函数语法 | 返回类型 | 描述 |
---|---|---|
get_json_object(json_string, path) |
INT |
从指定地址 path 获取 json 对象。 |
参数说明:
-
json_string:JSON 字符串。
-
path:需要提取的 JSON 字符串的路径,例如可通过 $ 指定根元素路径。
注意事项:
-
输入的 JSON 字符串参数 json_string 无效,则结果返回 NULL。
使用示例:
SELECT get_json_object('{"Hello": "World", "Product": "Inceptor"}', '$.Product') AS result FROM system.dual;
复制
返回示例:
+-----------+ | result | +-----------+ | Inceptor | +-----------+
复制
in_file
函数语法 | 返回类型 | 描述 |
---|---|---|
in_file(str,filepath) |
Boolean |
判断指定字符 str 是否在文件 filepath 中出现。该函数仅在 Cluster Mode 下生效,因此需要关闭开关 |
参数说明:
-
str:指定字符串。
-
filepath:已存在的文件路径。
注意事项:
-
当参数 str 为空串时,则结果返回 true。
使用示例:
set ngmr.dd.local.mode.auto=false; SELECT in_file('123','/etc/hosts') AS result FROM system.dual;
复制
返回示例:
+---------+ | result | +---------+ | false | +---------+
复制
instr
函数语法 | 返回类型 | 描述 |
---|---|---|
instr(str, substr [, start_position [, nth_appearance]]) |
INT |
返回 substr 在 str 中从 start_position 下一位开始,第 nth_appearance 次出现的位置;若不曾出现则返回 0。 |
参数说明:
-
str:字符串。
-
substr:需要查询出现位置的子字符串。
-
start_position:可选参数,指定开始的位置,支持 INT 型,若不指定则默认从第 1 个字符开始。
-
nth_appearance:可选参数,指定第 n 次出现,若不指定则默认为 1,支持 INT 型。
注意事项:
-
当任一参数为 NULL 时,则结果返回 NULL。
-
当参数 start_position 或 nth_appearance 为空串时,结果返回 NULL。
使用示例:
字符串 '001122' 中,从第 3 个字符的下一位开始,第 1 次出现 '1' 的位置:
SELECT instr('001122','1',3,1) AS result FROM system.dual;
复制
返回示例:
+---------+ | result | +---------+ | 4 | +---------+
复制
oracle_instr
函数语法 | 返回类型 | 描述 |
---|---|---|
oracle_instr(str, substr [, start_position [, nth_appearance ]]) |
STRING |
返回子字符 substr 从 start_position 开始,第 nth_appearance 次在字符串 str 中出现的位置;若不曾出现则返回 0。 |
参数说明:
-
str:字符串,支持字符串类型。
-
substr:子字符串,支持字符串类型。
-
start_position:可选参数,指定开始的位置,支持 INT 型,若不指定则默认从第 1 个字符开始。
-
nth_appearance:可选参数,指定第 n 次出现,若不指定则默认为 1,支持 INT 型。
注意事项:
-
当任一参数 str 或 substr 为 NULL 时,结果返回 NULL。
-
若子字符串 substr 不存在于满足条件的 str 中时,则结果返回 0.
使用示例 1:
SELECT oracle_instr('big data', 'data') AS result FROM system.dual LIMIT 1;
复制
返回示例 1:
+---------+ | result | +---------+ | 5 | +---------+
复制
使用示例 2:
字符串 '001122' 中,从第 3 个字符开始,第 1 次出现 '1' 的位置:
SELECT oracle_instr('001122', '1',3,1) AS result FROM system.dual LIMIT 1;
复制
返回示例 2:
+---------+ | result | +---------+ | 3 | +---------+
复制
instrb
函数语法 | 返回类型 | 描述 |
---|---|---|
instrb(str, substr) |
INT |
该函数会返回子字符串 substr 第一次在字符串 str 中出现的位置;若不曾出现则返回 0。 |
参数说明:
-
str:字符串,支持字符串类型。
-
substr:子字符串,支持字符串类型。
注意事项:
-
当任一参数 str 或 substr 为 NULL 时,结果返回 NULL。
-
若子字符串 substr 不存在于 str 中,则结果返回 0.
使用示例:
SELECT instrb('Facebook', 'boo') AS result FROM system.dual LIMIT 1;
复制
返回示例:
+---------+ | result | +---------+ | 5 | +---------+
复制
oracle_instrb
函数语法 | 返回类型 | 描述 |
---|---|---|
oracle_instrb(str, substr, [start_position, [nth_appearance]])) |
INT |
返回 substr 在 str 中,从第 start_position 个字符开始,第 nth_appearance 次出现的位置(当只有参数 str 和 substr 时,输出结果与 instrb 函数相同);若不曾出现则返回 0。 |
参数说明:
-
str:字符串。
-
substr:需要查询出现位置的子字符串。
-
start_position:可选参数,指定查询起始位置开始, substr 在 str 中第一次出现的位置。
-
nth_apperance:可选参数,指定返回 substr 在 str 中第 n 次出现的位置。
使用示例 1
SELECT oracle_instrb('ababab','ab') AS result FROM system.dual LIMIT 1;
复制
返回示例 1
+---------+ | result | +---------+ | 1 | +---------+
复制
使用示例 2
SELECT oracle_instrb('ababab','ab',2) AS result FROM system.dual LIMIT 1;
复制
返回示例 2
+---------+ | result | +---------+ | 3 | +---------+
复制
使用示例 3
SELECT oracle_instrb('ababab','ab',1,3) AS result FROM system.dual LIMIT 1;
复制
返回示例 3
+---------+ | result | +---------+ | 5 | +---------+
复制
locate
函数语法 | 返回类型 | 描述 |
---|---|---|
locate(substr, str[, pos]) |
INT |
返回 substr 从 pos 位置开始,第一次在 str 中出现的位置;若不曾出现则返回 0。 |
参数说明:
-
str:字符串。
-
substr:需要查询出现为止的子字符串。
-
pos:查询开始的位置,不指定则默认从为 1 从第一个字符开始。
注意事项:
-
当任意参数为 NULL 时,则结果返回 NULL。
-
当参数 substr 为空串时,结果返回 1。
使用示例:
SELECT locate('123','456789123') AS result FROM system.dual;
复制
返回示例:
+---------+ | result | +---------+ | 7 | +---------+
复制
position
函数语法 | 返回类型 | 描述 |
---|---|---|
position(string, substring) |
整型 |
返回指定子字符串在目标字符串中首次出现的位置,如果未找到则返回 0。 |
参数说明:
-
string:目标字符串。
-
substring:要查找的子字符串。
注意事项:
-
position 函数对大小写敏感。如果需要进行大小写不敏感的子字符串查找,可以将目标字符串和子字符串都转换为小写(或大写)后再进行比较。
使用示例:
在字符串 Hello, world!
中查找子字符串 world
的位置。
SELECT position('Hello, world!', 'world') AS result;
复制
返回示例:
+---------+ | result | +---------+ | 8 | +---------+
复制
条件判断
decode
函数语法 | 返回类型 | 描述 |
---|---|---|
decode(expr, search1, result1[, search2, result2]…[, default]) |
STRING |
根据字符是否相等选择不同返回值:返回当 expr=search1 的时候返回 result1;当 expr=search2 时,返回 result2;否则返回 default。 |
参数说明:
-
expr:被比较的目标参数。
-
search1/search2…:需要与 expr 进行匹配的参数。
-
result1/result2…:对应与 search_n 的返回参数。
-
default:当 expr 与任何 search_n 都不匹配时,返回的默认值。
注意事项:
-
当设置参数
inceptor.udf.compatible.with.oracle=true
时:-
如果 (search1, result1) 是数值类型,则将 expr 和所有 search 值都转换为所有 result 值(包括 default)中优先级(BYTE < SHORT < INT < LONG < DECIMAL < FLOAT < DOUBLE)最高的数值类型,并进行比较,返回值也转换为此类型。
否则,将 expr 和所有 search 值都转换为 search1 的类型进行比较,返回值也转换为 result1 的类型。如果 search1 或 result1 为 CHAR 类型,则使用 VARCHAR2 类型代替,且其长度为所有 result 值中最长的一个数据类型的长度。
-
-
当 expr 为 NULL 或空串时,可以和值为 NULL 或空串的 search 匹配成功。
使用示例:
SELECT decode(1,1,'trans','product') AS result FROM system.dual;
复制
返回示例:
+----------+ | result | +----------+ | trans | +----------+
复制
lnnvl
函数语法 | 返回类型 | 描述 |
---|---|---|
lnnvl(condition) |
STRING |
处理判断条件 condition 中有 NULL 值出现的情况。condition 为 NULL 时,返回 true;condition 为 true 时返回 false;condition 为 false 时返回 true。 |
参数说明:
-
condition:值为 BOOLEAN 类型的表达式。
使用示例:
SELECT lnnvl(true) AS result1, lnnvl(false) AS result2, lnnvl(null) AS result3 FROM system.dual LIMIT 1;
复制
返回示例:
+----------+----------+----------+ | result1 | result2 | result3 | +----------+----------+----------+ | false | true | true | +----------+----------+----------+
复制
nvl
函数语法 | 返回类型 | 描述 |
---|---|---|
nvl(expr1, expr2) |
STRING |
替换 NULL 为其他字符。expr1 为 NULL 时返回 expr2 的值,否则返回 expr1。 |
参数说明:
-
expr1:若为 NULL 则被替换的参数,支持基本数据类型(包括 STRING)。
-
expr2:当 expr1 为 NULL 时返回的参数,支持基本数据类型(包括 STRING)。
使用示例:
SELECT nvl(null,'bigdata') AS result FROM system.dual LIMIT 1;
复制
返回示例:
+----------+ | result | +----------+ | bigdata | +----------+
复制
nvl2
函数语法 | 返回类型 | 描述 |
---|---|---|
nvl2(string1, value_if_not_null, value_if_null) |
STRING |
根据字符是否为 NULL 返回不同的值。若 string1 为 NULL,返回 value_if_null,否则返回 value_if_not_null。 |
参数说明:
-
string1:被替换的字符串参数。
-
value_if_not_null:当参数 string1 不为 NULL 时的输出值。
-
value_if_null:当参数 string1 为 NULL 时的输出值。
使用示例:
SELECT nvl2(null,'trans','product') AS result FROM system.dual LIMIT 1;
复制
返回示例:
+----------+ | result | +----------+ | product | +----------+
复制