联 系 我 们
售前咨询
售后咨询
微信关注:星环科技服务号
更多联系方式 >
6.8.11.10 字符串函数
更新时间:7/30/2024, 3:17:17 AM

数学求值
ascii
ascii
函数语法 返回类型 描述

ascii(A)

INT

返回 A 第一个字符的 ascii 值。A 可以是除了 BINARY 之外的任何基本类型,返回A第一个字符的ascii值。如果输入为Binary类型则报错。

参数说明

  • A:输入需要进行转换的字符。不支持 BINARY 类型。

注意事项

  • 当参数 A 为 NULL 时,结果返回 NULL。

  • 当参数 A 为空串时,结果返回 0。

使用示例

SELECT ascii('20') AS result FROM system.dual;
复制

返回示例

+---------+
| 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 下生效,因此需要关闭开关 ngmr.dd.local.mode.auto=false

参数说明

  • 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  |
+----------+
复制