六。模式匹配:

有三种实现模式匹配技术:SQL操作,最近类似的运营商,和POSIX风格的正则表达式。

1。像:

复制代码代码如下所示:

字符串模式{转义转义字符}

字符串不象模式{转义转义字符}



每一个模式定义了一组字符串,如果字符串包含在字符串设置为代表的模式,然后像表达式返回true。不如我们想象的,如果返回true,那么不喜欢表达返回FALSE,反之亦然。划线的模式(_)代表匹配任何单个字符,而百分之一符号(%),有零个或多个字符,如:

复制代码代码如下所示:

abc'like'abc真实

abc'like'a %的真实

abc'like '_b_真实

abc'like'c虚假



匹配文本下划线或百分比,而不是在模式匹配的其他人物,相应的领导人物必须转义字符,默认转义字符是反斜杠,但你可以指定一个与例外条款。匹配转义字符本身,写两转义字符,我们可以写逃生的方法来有效地关闭向下逃生机制,同时,我们不能关闭标志的特殊含义,强调。

关键词我可以用来取代一样,这样的比赛是当前区域无关。这个功能是不是SQL标准,而是一种扩展PostgreSQL。算子~ ~是等效的,和相应的我喜欢~ ~ *。有~ ~!~!~操作符*喜欢和不喜欢的分别代表不。所有这些运营商是PostgreSQL的具体。

2。与正则表达式类似:

与模式是否匹配给定字符串类似,返回true或false。

复制代码代码如下所示:

类似于模式转义转义字符}的字符串

与模式{转义转义字符}不相似的字符串



这是非常相似的,像('_'and通配符%),以保持其初衷。此外,类似还支持它自己的一些独特的元字符,如:

1)。|选择(其中一个候选人)。

2)。*表示重复以前的项目0或更多。

3)。+代表一个或多个重复项目。

4)。可以使用括号()将项合并为逻辑术语。

5)。方括号{ }表达式…声明一个字符,如像POSIX正则表达式。

请看下面的例子:

复制代码代码如下所示:

abc'similar to'abc真实

abc'similar to'a虚假

abc'similar为(B | D)真正的%。

abc'similar为(B | C)假%。



子串,子串(从转义字符模式串)三参数提供了一个功能的子字符串匹配正则表达式模式的SQL字符串中提取。如相似,陈述模式必须匹配整个字符串的数据,否则函数失败,返回零。为了识别模式的一部分应该返回在成功的时候,模式必须出现两转义字符后跟双引号(),与两标记之间的模式将返回的字符串,如:

考试= #选择子串('foobar'from o_b # ' % # %。# ');有#转义字符,双引号的模式是回报的一部分。

复制代码代码如下所示:

子串

在

OOB

(1行)

考试= #选择子串('foobar'from o_b # ' # %。# ');——foobar不能完全匹配的方式,因此返回null。

子串

在

(1行)



七。数据类型格式化功能:

PostgreSQL格式化函数将各种数据类型提供了一个有效的工具(日期/时间,整数,浮点数和数字)为格式的字符串,然后转换为格式化字符串指定的数据类型。这些功能如下。它们都遵循一个常见的调用习惯:第一个参数是要格式化的值,第二个参数是定义输出或输出格式的模板。





功能
返回类型
描述
例子


to_char(时间戳、文本)
文本
将时间戳转换为字符串
to_char(current_timestamp,'hh12:MI:SS)


to_char(间隔、文本)
文本
将时间间隔转换成字符串
to_char(间隔'15h 2m 12s ','hh24:MI:SS)


to_char(int,文本)
文本
将整数转换为字符串
to_char(125,'999)


to_char(双精度、文本)
文本
将实数/双精度转换为字符串
to_char(125.8::真的,'999d9)


to_char(数字、文字)
文本
将数字转换为字符串
to_char(125.8,'999d99s)


to_date(文本、文本)
日期
将字符串转换为日期
to_date('05月2000日,'dd周一yyyy)


to_timestamp(文本、文本)
时间戳
将字符串转换为时间戳。
to_timestamp('05月2000日,'dd周一yyyy)


to_timestamp(双)
时间戳
将UNIX时代转换为时间戳
(200120400)to_timestamp


to_number(文本、文本)
数字
将字符串转换为数字
to_number('12454.8','99g999d9s)





1。日期/时间格式的模式:





模式
描述


HH
小时数(01-12)


hh12
小时数(01-12)


hh24
小时数(00-23)


医疗保险
分钟(00-59)


SS
二(00-59)


MS
毫秒(000-999)


美国
微秒(000000 - 999999)


调幅
正午的符号(大写)


Y,YYY
逗号年(4和更多)


yyyy
年份(4个及更多)


YYY
一年中最后三个地方


YY
一年中最后两个地方


Y
最后的一年


月
完整的首都月份名称(空白填写为9个字符)


月
混合长度的月份名称(空白填充为9个字符)


月
全长小写月份名称(空白填充为9个字符)


周一
大写缩写月名(3个字符)


周一
缩写混合月份名(3个字符)


周一
小写缩写的月份名(3个字符)


mm
月数(01-12)


天
全长大写日期名(空白填充为9个字符)


天
全长混合的日期名(空白填充为9个字符)


天
全长小写日期名(空白填充为9个字符)


Dy
缩写的资本日期名称(3个字符)


Dy
缩写混合日期名(3字符)


Dy
缩写小写日期名称(3字符)


DDD
今年的天(001-366)


DD
一个月的日子(01-31)


D
一周的天数(1-7,星期日是1)


W
一个月(1-5)的周数(从一个月的第一天开始的第一周)


栈单
在一年的周数(1-53)(从每年的第一天的第一个星期)





2。用于数字格式化的模板模式:





模式
描述


九
具有指定位数的值。


零
带前导零的值


(点)。
小数点


(逗号)
包(千)分隔符


公共关系
尖括号负值


S
带符号的数值


l
货币符号


D
小数点


G
分组隔板


医疗保险
在指定的位置减去(如果数字是< 0)


PL
在指定的位置加上(如果数字> 0)


SG
在正/负的指定位置。





八,时间日期函数和操作符:

1。下面是一个列表的时间/日期运营商支持PostgreSQL:





算子
例子
结果


+
日期'2001-09-28 +整数年
日期'2001-10-05


+
日期'2001-09-28 +间隔1小时
时间戳的'2001-09-28 01:00


+
日期'2001-09-28 +时间'03:00
时间戳'2001-09-28 03:00


+
间隔1天+间隔1小时
间隔1日01:00


+
时间戳'2001-09-28 01:00 +区间'23小时
'2001-09-29 00:00的时间戳


+
时间'01:00 +间隔3小时
时间'04:00


—
间隔'23小时
区间- 23:00


—
日期'2001-10-01日期'2001-09-28
整数3


—
日期'2001-10-01整数年
日期'2001-09-24


—
日期'2001-09-28的间隔1小时
时间戳'2001-09-27 23:00


—
时间'05:00 '时间'03:00
区间'02:00


—
时间'05:00的间隔2小时
时间'03:00


—
时间戳'2001-09-28 23:00的间隔'23小时
'2001-09-28 00:00的时间戳


—
间隔1天间隔1小时
区间'23:00


—
时间戳'2001-09-29 03:00'2001-09-27 12:00的时间戳
间隔1日15:00


*
间隔1小时*双精度'3.5
区间'03:30


/
间隔1小时/双精度'1.5
区间'00:40





2。日期/时间函数:





功能
返回类型
描述
例子
结果


年龄(时间戳,时间戳)
区间
使用年份和月份减去参数并生成一个符号结果
年龄('2001-04-10,时间戳'1957-06-13)
43年9月27日


年龄(时间戳)
区间
从current_date减去值
年龄(时间戳'1957-06-13)
43年8月3日


current_date
日期
今天的日期




current_time
时间
现在的时间




current_timestamp
时间戳
日期和时间




date_part(文本、时间戳)
双
获取子域(相当于提取)
date_part('hour,时间戳'2001-02-16 20:38:40)
二十


date_part(文本、间隔)
双
获取子域(相当于提取)
date_part('month,间隔2年3个月)
三


date_trunc(文本、时间戳)
时间戳
截断指定的精度
date_trunc('hour,时间戳'2001-02-16 20:38:40)
2001-02-16 20:00:00 + 00


从时间戳中提取(字段)
双
获得一个子域
提取物(从时间戳'2001-02-16 20:38:40小时)
二十


从间隔中提取(字段)
双
获得一个子域
提取物(从间隔2年3个月的月)
三


当地时间
时间
今天的时间




localtimestamp
时间戳
日期和时间




(现在)
时间戳
当前的日期和时间(相当于current_timestamp)




属性()
文本
当前日期和时间







三.提取物,date_part功能支持的领域:





领域
描述
例子
结果


世纪
世纪
提取物(从时间戳'2000-12-16 12:21:13世纪);
二十


天
数据域(1-31)在(月)
提取物(天时间戳'2001-02-16 20:38:40);
十六


十年
年域除以10
提取物(从时间戳'2001-02-16 20:38:40十年);
二百


道琼斯指数
周周数(0-6;星期日是0)(仅用于时间戳)
提取物(道琼斯指数从时间戳'2001-02-16 20:38:40);
五


狗
一年的第一天(1 - 365 366)(仅用于时间戳)
提取物(你从时间戳'2001-02-16 20:38:40);
四十七


小时
每小时的域(0-23)
提取物(从时间戳'2001-02-16 20:38:40小时);
二十


微秒
第二个字段,包括小数部分,乘以1000000。
提取物(从时间'17:12:28.5的微秒);
二十八百万和五十万


一千年
几千年来
提取物(从时间戳'2001-02-16 20:38:40千年);
三


毫秒
第二个字段,包括小数部分,乘以1000。
提取物(从时间'17:12:28.5 '毫秒);
二十八千五百


分钟
分域(到59)
提取物(从时间戳'2001-02-16 20:38:40分钟);
三十八


月
对于时间戳值,它是一年中的月数(1-12);为区间值,它的月数,然后12以模式(0-11)。
提取物(从时间戳'2001-02-16 20:38:40月);
二


季度
一年中的四分之一(1-4)(仅用于时间戳)
提取物(从时间戳'2001-02-16 20:38:40区);
一


二
第二域,包括小数部分(到59 { 1 })
提取物(二从时间戳'2001-02-16 20:38:40);
四十


周
这一天是下一年的第二周。
提取物(从时间戳'2001-02-16 20:38:40周);
七


年
每年的域
提取物(从时间戳'2001-02-16 20:38:40年);
二千零一





4。当前日期/时间:

我们可以使用下面的函数获取当前日期和/或时间:

复制代码代码如下所示:

current_date

current_time

current_timestamp

current_time(精度)

current_timestamp(精度)

当地时间

localtimestamp

当地时间(精度)

localtimestamp(精度)



所有在本博客提供的信息是来自官方的PostgreSQL文档。写这个博客的主要目的是为了方便将来的访问,特此声明。