暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DEV01-GBase 8a MPP Cluster SQL 编码进阶篇之内置函数04

原创 wiserhowe 2023-09-20
1270
(七)字符串处理函数
常用函数 基本功能
LOWER,LCASE,UPPER 转换字母大小写
REPLACE 替换字符串中指定的字符串
ASCII 取ASCII码
CONCAT 或 || 字符串连接
SUBSTRING,LEFT,RIGHT 字符串截取
INSTR 取字符串位置
NVL 替换NULL值
TRIM,LTRIM,RTRIM 去除字符串中空格
LENGTH ,CHAR_LENGTH 取字符串长度

1、LOWER, LCASE:全部字母转换为小写;UPPER, UCASE:全部字母转换为大写

函数调用 返回值
UPPER(‘gb’) || LOWER(‘ASE’) || LCASE(’ 8A’) GBase 8a

2、REPLACE(String,fromStr,toStr) :替换字符串中指定的字符串

函数调用 返回值
REPLACE(‘1234567’,‘23’,‘AB’) 1AB4567

小贴士:REPLACE 第一个参数通常是一个字符型字段,执行 REPLACE 操作后,该字段的值是不会变化的。

3、ASCII
      功能:返回字符串首字符的ASCII码值

函数调用 返回值 解释
ASCII(‘A’) 65
ASCII(‘Abc’) 65 多个字符只取第一个
ASCII(NULL) NULL 空指针做参数不会报错

4、CHAR
      功能:返回ASCII码值对应的字符组成的字符串,忽略 NULL

函数调用 返回值 解释
CHAR(65, 66, NULL, 67) ABC NULL 被忽略了

5、CONCAT 或 ||
      功能:字符串连接,可将将数字隐形转换为字符串。

select CONCAT('GBASE公司', ceiling(datediff(now(), '2004-5-1')/365), '岁了') as RESULT;
RESULT
GBASE公司19岁了

GBASE公司成立于2004-5-1,今天是2022-6-9,年头超过18年,由于ceiling是天花板整除函数,所以,最后的结果是19。

6、GROUP_CONCAT (<列名> separator <分隔符>)
      功能:同一分组内聚集列字符串进行连接。
      测试表 student Sname 列数据如下——

Sname
刘备
孙权
曹操
张辽
貂蝉
小乔
大乔
关羽
周瑜
张飞
陆逊

执行以下 SQL

select GROUP_CONCAT(Sname separator '\\') RESULT from student
RESULT
关羽\刘备\周瑜\大乔\孙权\小乔\张辽\张飞\曹操\貂蝉\陆逊

小贴士:
1、分隔符是“\”,需要转义,即"\\"。
2、如果拼接后的字串超过 1024 个字节,SQL 将报错聚集数据越界的错误。此时可以考虑将系统参数 group_concat_max_len 放大一些。其默认值1024,最大32767。
3、GROUP_CONCAT 不能和 Order By 子句一起使用。

7、SUBSTRING_INDEX (<原始字符串>, ‘<分隔符>’, N)
      功能:以指定分隔符将原始字符串分隔为子字符串序列,从第一个子字符串取到第 N 个子字符串。

函数调用 返回值 解释
substring_index(‘www.baidu.com’, ‘.’, 2) www.baidu www.baidu.com 以 “.” 分割为 www、baidu、com 三个子字符串,取前两个子字符串然后再用分隔符连接起来
substring_index(‘www.baidu.com’, ‘.’, 0) 返回空串

小贴士:如果原始分隔符在字符串中不存在,则原始字符串只能是一个子字符串,只要 N > 0 该函数的返回值都是原始字串。

8、INSTR (源字符串,查找字符串,起始位置,第n次出现)
      功能:返回查找字符串位置。查找到的位置索引从 1 开始。

函数调用 返回值 解释
INSTR(‘wwerw.gbase.cerom’,‘er’) 3
INSTR(‘wwerw.gbase.cerom’,‘er’,1,2) 14

9、NVL (<字符串>,replace_with)
      功能:若第一个参数是 NULL,函数返回 replace_with。

select cID, cName, nvl(cpno,'unknown') as CPNo from subject;
cID cName CPNo
1 数据库 5
2 数学 unknown
3 信息系统 1
4 操作系统 6
5 数据结构 7
6 数据处理 unknown
7 Python语言 6

nvl 函数替换 cpno 列中 NULL 值为 “unknown” 字串。

10、LEFT / RIGHT
功能:从左/右截取指定位数的字符串。
下面的例子是数字格式化,统一成四位,不足四位左补零。

函数调用 返回值 解释
RIGHT(concat(repeat(‘0’, 4), 12),4) 0012

11、LENGTH(<字符串>):返回字节长度。
       CHAR_LENGTH(<字符串>):返回字符长度。。
       CHARACTER_LENGTH(<字符串>):返回字符长度。
       GBase 8a 默认安装时字符集是UTF8,一个汉字占3个字节。

函数调用 返回值 解释
LENGTH('南大通用GBase ') 17 3个汉字和5个字母
CHAR_LENGTH(‘南大通用GBase’); 9 一个汉字都是一个字符

12、TRIM( [{BOTH | LEADING | TRAILING} [trim_char] FROM] <字符串> )
       功能:移除<字符串>中所有的 trim_char 前缀或后缀。如果没有给出任何 BOTH、LEADING 或 TRAILING 修饰符,默认BOTH。如果没有指定 trim_char,将移除空格。

函数调用 返回值 解释
TRIM(TRAILING ‘.pptx’ from ‘GBase 8a 集群核心技术.pptx’) GBase 8a 集群核心技术 去掉 File Name 的扩展名
最后修改时间:2023-09-20 10:21:40
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论