返回首页

gbase数据、南大通用产品文档:GBase8aexpr LIKE pat [ESCAPE 'escapechar']

更新日期:2024年09月11日

函数说明
expr LIKE pat [ESCAPE 'escape-char']。
使用SQL 的简单的正则表达式进行比较的
模式匹配。如果表达式expr 匹配pat,返回1(TRUE),否则返回0(FALSE)。
模式未必就是文字字符串,例如,它可以使用字符串表达式或表列。可以在模式
中使用下面所示的两个通配符与LIKE 配合使用。
表5- 13 通配符说明
字符
含义
%
匹配任意多个字符,或零个字符。
_
严格地匹配一个字符。
示例
示例1:expr 与pat 相匹配,通配符为“_”,返回1。
gbase> SELECT 'David!' LIKE 'David_' FROM dual;
+------------------------+
| 'David!' LIKE 'David_' |
+------------------------+

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
732
|
1 |
+------------------------+
1 row in set
示例2:expr 与pat 相匹配,通配符为“%”,返回1。
gbase> SELECT 'David!' LIKE '%D%v%' FROM dual;
+-----------------------+
| 'David!' LIKE '%D%v%' |
+-----------------------+
|
1 |
+-----------------------+
1 row in set
说明
substr 在str 中的位置,以1 开始计数。
返回的位置是按全字符串正向位置计数的,与从哪个位置开始无关。
表5- 14 字符串说明
字符串
含义
\%
匹配一个%字符。
\_
匹配一个_字符。
示例3:expr 与pat 不匹配,返回0。
gbase> SELECT 'David!' LIKE 'David\_' FROM dual;
+-------------------------+
| 'David!' LIKE 'David\_' |
+-------------------------+
|
0 |
+-------------------------+
1 row in set
示例4:转义字符“\_”匹配“_”。
gbase> SELECT 'David_' LIKE 'David\_' FROM dual;
+-------------------------+
| 'David_' LIKE 'David\_' |
+-------------------------+
|
1 |
+-------------------------+
1 row in set

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
733
示例5:为了指定一个不同的转义字符,可以使用ESCAPE 子句。
gbase> SELECT 'David_' LIKE 'David|_' ESCAPE '|' FROM dual;
+------------------------------------+
| 'David_' LIKE 'David|_' ESCAPE '|' |
+------------------------------------+
|
1 |
+------------------------------------+
1 row in set
示例6
gbase> SELECT 'abc' LIKE 'ABC' FROM dual;
+------------------+
| 'abc' LIKE 'ABC' |
+------------------+
|
1 |
+------------------+
1 row in set
示例7
gbase> SELECT 'abc' LIKE BINARY 'ABC' FROM dual;
+-------------------------+
| 'abc' LIKE BINARY 'ABC' |
+-------------------------+
|
0 |
+-------------------------+
1 row in set
说明
以上示例6 和示例7 表明,字符串比较是忽略大小写的,除非任一
操作数是一个二进制字符串。
示例8:LIKE 允许用在一个数字表达式上。
gbase> SELECT 10 LIKE '1%' FROM dual;
+--------------+
| 10 LIKE '1%' |
+--------------+
|
1 |
+--------------+
1 row in set

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

由于GBase 8a MPP Cluster 在字符串中使用C 转义语法(例如,用
“\n”代表一个换行字符),
在LIKE 字符串中,
必须将用到的“\”双写;

例如,若要查找“\n”,必须将其写成“\\n”。而若要查找“\”,
则必须将其写成‘\\\\’。原因是反斜线符号会被语法分析程序剥离一
次,在进行模式匹配时,又会被剥离一次,最后会剩下一个反斜线
符号接受匹配。

语法格式
CREATE [DEFINER = { user | CURRENT_USER }] EVENT
[IF NOT EXISTS]
ON SCHEDULE
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[GLOBAL | LOCAL]
[COMMENT 'comment']
DO event_body;
schedule:
AT
timestamp
[+
INTERVAL
interval]
...
|
EVERY
interval
[STARTS
timestamp
[+
INTERVAL
interval]
...]
[ENDS timestamp [+ INTERVAL interval] ...]
interval:
quantity { YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |WEEK |
SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND |
HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND }
表5- 204 参数说明
字段名称
含义说明
event_name
创建的event 名字(唯一确定的)
ON SCHEDULE
计划任务。
schedule
决定event 的执行时间和频率(注意时间一定要是将来的时
间,过去的时间会出错),有两种形式AT 和EVERY。
[ON
COMPLETION
[NOT] PRESERVE]
可选项,默认是ON COMPLETION NOT PRESERVE,即计
划任务执行完毕后自动
drop
该事件;ON
COMPLETION PRESERVE 则不会drop 掉。
COMMENT
'comment'
可选项,comment 用来描述event;相当于注释,最大长度
64 个字节。
[ENABLE
|
DISABLE]
设定event 的状态,默认ENABLE:表示系统尝试执行这个
事件,DISABLE:关闭该事件,可以用alter 修改。
[GLOBAL | LOCAL]
GLOBAL 表示各节点独占执行,LOCAL 表示各节点独立执

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

DO event_body
需要执行的sql 语句(可以是复合语句)。CREATE EVENT
在存储过程中使用是合法的。
注意

默认创建事件存储在当前库中,
也可显示指定事件创建在哪个库
中;

通过show events 只能查看当前库中创建的事件;

事件执行完即释放,如立即执行事件,执行完后,事件便自动删
除,多次调用事件或等待执行事件可以查看到;

如果两个事件需要在同一时刻调用,gbase 会确定调用他们的顺
序,如果要指定顺序,需要确保一个事件至少在另一个事件1 秒后
执行;

对于递归调度的事件,结束日期不能在开始日期之前;

select 可以包含在一个事件中,然而他的结果消失了,就好像没
执行过;

创建事件时不支持LOAD 语句;

event 不支持procedure、function、trigger 等对象的创建。
示例
创建测试表:
gbase> DROP TABLE IF EXISTS events_list;
gbase> CREATE TABLE events_list(event_name VARCHAR(20) NOT NULL, ev
ent_started TIMESTAMP NOT NULL);
创建事件1(立即启动事件):
CREATE EVENT event_now
ON SCHEDULE
AT NOW()
DO insert into events_list values('event_now', now());
查看事件执行结果:
gbase> select * from events_list;
+------------+---------------------+
| event_name | event_started
|
+------------+---------------------+
| event_now | 2017-07-01 04:06:40 |
+------------+---------------------+
创建事件2(每分钟启动事件):

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1450
CREATE EVENT test.event_minute
ON SCHEDULE
EVERY 1 MINUTE
DO insert into events_list values('event_now', now());
查看事件执行结果:
gbase> SELECT * FROM events_list;
+-------------+---------------------+
| event_name | event_started
|
+-------------+---------------------+
| event_now | 2017-07-01 04:26:53 |
| event_now | 2017-07-01 04:27:53 |
| event_now | 2017-07-01 04:28:53 |
+-------------+---------------------+


GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
58