1.1.1 位串函数和操作符
本节描述操作类型为bit和bit varying的值的函数和操作符。
|
操作符 |
描述 |
例子 |
结果 |
|
|| |
连接 |
B'10001' || B'011' |
10001011 |
|
& |
按位与 |
B'10001' & B'01101' |
00001 |
|
| |
按位或 |
B'10001' | B'01101' |
11101 |
|
# |
按位异或 |
B'10001' # B'01101' |
11100 |
|
~ |
按位求反 |
~ B'10001' |
01110 |
|
<< |
按位左移 |
B'10001' << 3 |
01000 |
|
>> |
按位右移 |
B'10001' >> 2 |
00100 |
1.1.2 模式匹配
GBase
8c提供了三种独立的实现模式匹配的方法:LIKE操作符、SIMILAR
TO操作符和POSIX-风格的正则表达式。
1.1.2.1 LIKE
string LIKE
pattern [ESCAPE escape-character]
string NOT LIKE
pattern [ESCAPE escape-character]
如果该string匹配了提供的pattern,那么LIKE表达式返回真。例如:
'abc' LIKE
'abc' true
'abc' LIKE
'a%' true
'abc' LIKE
'_b_' true
'abc' LIKE
'c' false
1.1.2.2 SIMILAR TO正则表达式
string SIMILAR TO
pattern [ESCAPE escape-character]
string NOT
SIMILAR TO pattern [ESCAPE escape-character]
SIMILAR
TO操作符根据自己的模式是否匹配给定串而返回真或者假。例如:
'abc' SIMILAR TO
'abc' true
'abc' SIMILAR TO
'a' false
'abc' SIMILAR TO
'%(b|d)%' true
'abc' SIMILAR TO
'(b|c)%' false
1.1.2.3 POSIX正则表达式
下表列出了所有可用于POSIX正则表达式模式匹配的操作符:
|
操作符 |
描述 |
例子 |
|
~ |
匹配正则表达式,大小写敏感 |
'thomas' ~ '.*thomas.*' |
|
~* |
匹配正则表达式,大小写不敏感 |
'thomas' ~* '.*Thomas.*' |
|
!~ |
不匹配正则表达式,大小写敏感 |
'thomas' !~ '.*Thomas.*' |
|
!~* |
不匹配正则表达式,大小写不敏感 |
'thomas' !~* '.*vadim.*' |
例如:
'abc' ~
'abc' true
'abc' ~ '^a' true
'abc' ~
'(b|d)' true
'abc' ~ '^(b|c)' false
1.1.3 数据类型格式化函数
GBase
8c数据库格式化函数提供一套强大的工具用于把各种数据类型 (日期/时间、整数、浮点、数字) 转换成格式化的字符串以及反过来从格式化的字符串转换成指定的数据类型。这些函数都遵循一个公共的调用习惯:
第一个参数是待格式化的值,而第二个是一个定义输出或输入格式的模板。
|
函数 |
返回类型 |
描述 |
例子 |
|
to_char(timestamp, text) |
text |
把时间戳转成字符串 |
to_char(current_timestamp, 'HH12:MI:SS') |
|
to_char(interval, text) |
text |
把间隔转成字符串 |
to_char(interval
'15h 2m 12s', 'HH24:MI:SS') |
|
to_char(int, text) |
text |
把整数转成字符串 |
to_char(125, '999') |
|
to_char(double precision,
text) |
text |
把实数或双精度转成字符串 |
to_char(125.8::real,
'999D9') |
|
to_char(numeric, text) |
text |
把数字转成字符串 |
to_char(-125.8, '999D99S') |
|
to_date(text, text) |
date |
把字符串转成日期 |
to_date('05 Dec 2000',
'DD Mon YYYY') |
|
to_number(text, text) |
numeric |
把字符串转成数字 |
to_number('12,454.8-',
'99G999D9S') |
|
to_timestamp(text, text) |
timestamp with time zone |
把字符串转成时间戳 |
to_timestamp('05 Dec 2000',
'DD Mon YYYY') |
1.1.4 时间/日期函数和操作符
如下表为可用于处理日期/时间的函数:
|
函数 |
返回类型 |
描述 |
例子 |
结果 |
|
|
|
减去参数,生成一个使用年、月(而不是只用日)的“符号化”的结果 |
|
|
|
|
|
从 |
|
|
|
|
|
当前日期和时间(在语句执行期间变化) |
|
|
|
|
|
当前日期 |
|
|
|
|
|
当前时间(一天中的时间) |
|
|
|
|
|
当前日期和时间(当前事务开始时) |
|
|
|
|
|
获得子域(等价于 |
|
|
|
|
|
获得子域(等价于 |
|
|
|
|
|
截断到指定精度 |
|
|
|
|
|
截断到指定精度 |
|
|
|
|
|
获得子域 |
|
|
|
|
|
获得子域 |
|
|
|
|
|
测试有限日期(不是+/-无限) |
|
|
|
|
|
测试有限时间戳(不是+/-无限) |
|
|
|
|
|
测试有限间隔 |
|
|
|
|
|
调整间隔这样30天时间周期可以表示为月 |
|
|
|
|
|
调整间隔这样24小时时间周期可以表示为日 |
|
|
|
|
|
使用 |
|
|
|
|
|
当前时间(一天中的时间) |
|
|
|
|
|
当前日期和时间(当前事务的开始) |
|
|
|
|
|
从年、月、日域创建日期 |
|
|
|
|
|
从年、月、周、日、时、分、秒域创建
interval |
|
|
|
|
|
从时、分、秒域创建时间 |
|
|
|
|
|
从年、月、日、时、分、秒域创建时间戳 |
|
|
|
|
|
从年、月、日、时、分、秒域创建带时区的时间戳。如果没有指定 |
|
|
|
|
|
当前日期和时间(当前事务的开始) |
|
|
|
|
|
当前日期和时间(当前事务的开始) |
|
|
|
|
|
当前日期和时间(像 |
|
|
|
|
|
当前日期和时间(当前事务的开始) |
|
|
|
|
|
把 Unix 时间(从 1970-01-01 00:00:00+00 开始的秒)转换成 timestamp |
|
|




