返回首页

gbase数据、南大通用产品文档:GBase8aregexp_replace

更新日期:2024年09月11日

语法
regexp_replace(source_char,pattern[,replace_string[,position[,occurren
ce[match_option]]]])
说明
用replace_string 指定的字符串替换源字符串中与pattern 指定的正则
表达式相匹配的字符串。
功能
将匹配获得的字符串替换成指定的字符串。
参数说明
表5- 15 参数说明
参数
说明
source_char
源字符串。该参数支持的数据类型与8a 的replace 函数的src 参
数一致。
pattern
正则表达式。
每个正则表达式最多可包含512 个字节。
具体语法
规则请参考PCRE-7.8 版本的语法规则说明
replace_string
替换字符串。替换字符串可以包含反向引用的数字表达式(\n,
n 的取值范围是[1,9])
position
开始匹配的位置,如果不指定默认为1,即从source_char 的第
一个字符开始匹配。position 为一个正整数。
occurrence
正则匹配的序数。是一个非负的整数,默认值为0。

指定为0,则替换所有匹配到的字符串;

如果指定为整数n,则替换第n 次匹配到的字符串;
match_parameter
可通过设置该参数改变默认的匹配功能行为。默认情况下“.”不
匹配换行符,源字符串被看作一行。参数可选项如下:

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
739
参数
说明

i:大小写不敏感;

c:大小写敏感;

n:点号(.)不匹配换行符号;

m:多行模式;

x:扩展模式,忽略正则表达式中的空白字符。
注意

用户同时指定多个互斥参数可选项时,系统按照最后一个参数处理。用户
指定match_parameter 参数选项(i,c,n,m,x)以外的选项时,系统报错。

regexp_replace 函数的replace_string、
position、
occurrence、
match_parameter
参数都能省略,若上述4 个参数中的任何一个省略,省略参数后的所有参
数都不能设置,若需要设置后续参数则必须给出所设置参数的上一个参数
的值。

由于sql 语法与pcre 正则语法都使用反斜杠
('\')
作为转义符。
所以在pattern
中应使用连续两个反斜杠(‘\\')作为正则的转义符。

regexp_replace 函数不支持递归。

如果source_char 参数为运算结果而非表的实体列,且此运算结果大于512
个字节,则函数报错。
例如:
CREATE VIEW v_tb1 as SELECT * FROM tb1 WHERE v1 = (select
regexp_replace('000*111*999','\\*','-') from tb2 where
v2=regexp_replace(c1,'\\*','-'));
SELECT * from alltype A left join (SELECT regexp_replace(v1, 'a', '')
as c41 from v_tb1)
B on A.V3 =
regexp_replace(B.c41,'\\*','-') ;
示例
示例1:在简单select 查询中使用函数。
gbase> drop table if exists tb1;
Query OK, 0 rows affected
gbase> drop table if exists tb2;

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
740
Query OK, 0 rows affected
gbase> create table tb1(v1 varchar(25),c1 char(11),i1 int);
Query OK, 0 rows affected
gbase> insert into tb1 values('000-111-999','000*111*999',12);
Query OK, 1 row affected
gbase> create table tb2(v2 varchar(25),c2 char(11),i2 int);
Query OK, 0 rows affected
gbase> insert into tb2 values('000-111-999','000*111*999',12);
Query OK, 1 row affected
gbase> SELECT regexp_replace('000-111-999','-','') from tb1;
+--------------------------------------+
| regexp_replace('000-111-999','-','') |
+--------------------------------------+
| 000111999
|
+--------------------------------------+
1 row in set

SQL 日志也是general 日志,它记录数据库曾经执行过的SQL 语句。
日志文件命名格式
日志文件名称可通过设置general_log_file 参数修改,默认路径$GCLUSTER_BA
SE/log/gcluster/gclusterd.log。
日志内容说明

通过如下语句,开启SQL 日志,语法如下:
SET GLOBAL general_log =on;
SET GLOBAL log_output='FILE'|'TABLE';

log_output 参数值'FILE'|'TABLE'选项值为二选一;

log_output 参数值是FILE 时,表示生成日志文件,为默认设置;

log_output 参数值是TABLE 时,表示生成日志的日志内容输出到表中,
一般这个选项在集群监控工具中使用;

log_output 参数值是TABLE 时,表示将SQL 语句写入一个表中,在监
控工具中要开启审计日志功能,则必须设置为TABLE;

日志文件名称可通过设置general_log_file 参数修改,默认是$GCLUSTE
R_BASE/log/gcluster/gclusterd.log。
注意
在监控工具中开启SQL 日志功能方法为:
SET GLOBAL general_log=true;
SET GLOBAL log_output='TABLE';

节点替换时报错无法登录新节点
描述
节点替换时报错:
Fail to get XX.XX.XX.XX's free disk, reason:Fail to login XX.XX.XX.XX. errno: -1,
errmsg:gbase@XX.XX.XX.XX:Permissiondenied(publickey,gssapi-key,gssapi-with-mic,
password).
解决办法
在新节点手工创建gbase 用户,并将密码设置成和其它节点相同的。
echo gbase:XXX|chpasswd
(XXX 为设置的密码)

GBase 8a MPP Cluster 最佳实践
5 FAQ
文档版本(2022-02-11)
南大通用数据技术股份有限公司
165