GBase 8a
运维管理
文章

GBase8a_字符串函数_04

发表于2026-06-26 16:11:0314次浏览1个评论

REPEAT(str,count)

函数说明

示例

返回一个重复了 count 次的字符串 str 组成的字符串。如果 count<=0,返回一个空 字符串;如果 str 或 count 是 NULL,返回值为 NULL。count 值范围为 bigint。

示例 1:返回将“GBase”重复 3 次后的字符串。

gbase> SELECT REPEAT('GBase', 3) FROM dual;
+--------------------+
| REPEAT('GBase', 3) | 
+--------------------+
| GBaseGBaseGBase | 
+--------------------+
1 row in set

注意

若repeat(str,count)中,str所占用字节数*count>16M, 请在集群配置文件中[gbased]栏增加 max_allowed_packet = 64M。因为 repeat 虽然允许单个最大元组为 64M,但是客 户端默认配置 max_allowed_packet 为 16M,会将大于 16M 的内容拦截,并报错处理。

REPLACE(str,from_str,to_str) 函数说明

返回的结果是将 str 中所有出现的 from_str 替换为 to_str 后的字符串。

示例

示例 1:将“www.gbase8a.com”中所有出现的“w”替换为“Ww”。

gbase> SELECT REPLACE('www.gbase8a.com', 'w', 'Ww') FROM dual;
+---------------------------------------+
| REPLACE('www.gbase8a.com', 'w', 'Ww') | 
+---------------------------------------+
| WwWwWw.gbase8a.com | 
+---------------------------------------+
1 row in set

 

REVERSE(str) 函数说明

返回逆序输出的字符串。

示例

示例 1:将“abc”按从右到左的顺序输出。

gbase> SELECT REVERSE('abc') FROM dual;
+----------------+
| REVERSE('abc') | 
+----------------+
| cba |
 +----------------+
1 row in set

RIGHT(str,len)

函数说明

返回字符串 str 中从右边数的 len 个字符。

示例

示例 1:返回“foobarbar”最右边的 4 个字符。

gbase> SELECT RIGHT('foobarbar', 4) FROM dual;
+-----------------------+
| RIGHT('foobarbar', 4) | 
+-----------------------+
| rbar | 
+-----------------------+
1 row in set

RPAD(str,len,padstr) 函数说明

用字符串 padstr 对 str 进行右边填补,直至它的长度达到 len 个字符长度,然后返 回补齐后的 str。如果 str 的长度长于 len,那么它将被截取到 len 个字符。

示例

示例 1:在“hi”的右边补充“?”,直到长度为 5 位。

 gbase> SELECT RPAD('hi',5,'?') FROM dual;
+------------------+
| RPAD('hi',5,'?') | 
+------------------+
| hi??? | 
+------------------+
1 row in set

示例 2:“hiacd”的长度大于 2,则截取到 2 个字符。

gbase> SELECT RPAD('hiacd',2,'?') FROM dual;
+------------------+
| RPAD('hi',2,'?') | 
+------------------+
| hi |
 +------------------+
1 row in set

RTRIM(str)

函数说明

返回移除字符串 str 最右边多余空格后的字符串。

示例

示例 1:移除“barbar ”最右边的多余空格。

gbase> SELECT RTRIM('barbar
') FROM dual;
+--------------------+
| RTRIM('barbar ') | 
+--------------------+
| barbar | 
+--------------------+
1 row in set

SUBSTRING()

语法格式

SUBSTRING(str,pos) 
SUBSTRING(str,pos,len) 
SUBSTRING (str from pos) 
SUBSTRING (str from pos for len)

函数说明
没有 len 参数的 SUBSTRING()函数从字符串 str 的 pos 位置返回剩余全部子串。

带有 len 参数的 SUBSTRING()函数从字符串 str 的 pos 位置起返回 len 个字符的子 串。

pos 可以是负值,在这种情况下,子串的起始位置是从字符串的尾部向前的 pos 位置。

如果 len 为 0,返回结果为空串。
如果 str 为 NULL,返回结果为 NULL。

示例

示例 1:返回“Quadratically”从第 5 位开始的子串。

gbase> SELECT SUBSTRING('Quadratically',5) FROM dual;
+------------------------------+
| SUBSTRING('Quadratically',5) | 
+------------------------------+
| ratically |
 +------------------------------+
1 row in set
gbase> SELECT SUBSTRING('Quadratically' from 5);
 +-----------------------------------+
| SUBSTRING('Quadratically' from 5) | 
+-----------------------------------+
| ratically | 
+-----------------------------------+
1 row in set

示例 2:返回“Quadratically”从第 5 位开始的 6 个字符。

gbase> SELECT SUBSTRING('Quadratically',5,6) FROM dual;
+--------------------------------+
| SUBSTRING('Quadratically',5,6) | 
+--------------------------------+
| ratica | 
+--------------------------------+
1 row in set
gbase> SELECT SUBSTRING('Quadratically' from 5 for 6); 
+-----------------------------------------+
| SUBSTRING('Quadratically' from 5 for 6) | 
+-----------------------------------------+
| ratica | 
+-----------------------------------------+
1 row in set

示例 3:pos 为“-3”,则返回的子串是“Sakila”尾部的 3 个字符。

gbase> SELECT SUBSTRING('Sakila', -3) FROM dual;
+-------------------------+
| SUBSTRING('Sakila', -3) | 
+-------------------------+
| ila |
 +-------------------------+
1 row in set

示例 4:pos 为“-5”,len 为“3”,则返回的子串为“Sakila”从第 2 位开始的 3 个字符。

gbase> SELECT SUBSTRING('Sakila', -5, 3) FROM dual;
+----------------------------+
| SUBSTRING('Sakila', -5, 3) | 
+----------------------------+
| aki | 
+----------------------------+
1 row in set

示例 5:str 为 NULL 示例以及 len 为 0 的示例。

gbase> SELECT SUBSTRING('Sakila', 0);
+------------------------+
| SUBSTRING('Sakila', 0) | 
+------------------------+
| Sakila | 
+------------------------+
1 row in set (Elapsed: 00:00:00.00)
gbase> SELECT SUBSTRING('Sakila',0,0);
+-------------------------+
| SUBSTRING('Sakila',0,0) |
+-------------------------+ 
|						| 
+-------------------------+
1 row in set (Elapsed: 00:00:00.00)
gbase> SELECT SUBSTRING(NULL, 0);
+--------------------+
| SUBSTRING(NULL, 0) |
 +--------------------+
| NULL | 
+--------------------+
1 row in set (Elapsed: 00:00:00.00)
gbase> SELECT SUBSTRING(NULL,0,0);
+---------------------+
| SUBSTRING(NULL,0,0) | 
+---------------------+
| NULL | 
+---------------------+
1 row in set

SUBSTRING_INDEX(str,delim,count)

函数说明

返回字符串 str 中在第 count 个分隔符 delim 之前的子串。如果 count 是一个正数, 返回从最后的(从左边开始计数)分隔符到左边所有字符;如果 count 是负数, 返回从最后的(从右边开始计数)分隔符到右边所有字符。

示例

示例 1:count 是正数,返回从分隔符“.”到左边的所有字符。

gbase> SELECT SUBSTRING_INDEX('www.gbase8a.com', '.', 2) FROM dual;
+--------------------------------------------+
| SUBSTRING_INDEX('www.gbase8a.com', '.', 2) | 
+--------------------------------------------+
| www.gbase8a | 
+--------------------------------------------+
1 row in set

示例 2:count 是负数,返回从分隔符“.”到右边的所有字符。
 

gbase> SELECT SUBSTRING_INDEX('www.gbase8a.com', '.', -2) FROM dual;
+---------------------------------------------+
| SUBSTRING_INDEX('www.gbase8a.com', '.', -2) | 
+---------------------------------------------+
| gbase8a.com |
 +---------------------------------------------+
1 row in set

 

 

评论

登录后才可以发表评论
GBase用户51829发表于 1个月前
谢谢分享,已收藏