万梅资源网 Design By www.ubjie.com

作为当前最强大的开源数据库,Postgresql(以下简称pg)对字符的处理也是最为强大的,首先他也有substr,trim等其他数据库都有的普通函数,这里我们介绍他更强大的一个函数substring,可以像python,java等编程语言一样使用正则表达式,强大到极点

在此之前我们先了解一下正则表达式最基础的四个

%代表一个或多个字符 _代表一个字符 ^代表字符前 $代表字符后

pg的官网上对其用法是下面这样,但不够清楚了然,下面我一一解释

PostgreSQL字符切割:substring函数的用法说明

第一个

用法和substr差不多,是指定序列,from 2 for 3 是从序列为2的位置开始取3个字符。例子如上

第二个

例子用法的意思是:$代表字符后, 一个点代表一个字符,即从最末尾开始选择3个字符,同样的如果是substring('Thomas' from '^....') 则结果是Thom

第三个

用法是最实用的,也是最难理解的,先大致理解:

from '%#"o_a#"_' for '#' 中from是开始(包含),for后面跟的是逃逸,即结束

这个例子的意思是我想要o_a的组合字符,其中o_a的多个(%)字符不要,后面的一个(_)字符不要,这里要注意的是切分后面剩多少字符写几个_

这里的架构可以理解为固定的,即 from '#"#"' for '#' #" 是分割字符,可以在#"前中后限定选择你最想要的字符

下面用实例来讲解一下第三个用法

需求:下图的查询结果是查的日志表,我想要【】里的数据,由于【】里字符长度不固定,又只能用sql来切割,因此只能使用第三种方法来获取【】里的数据

PostgreSQL字符切割:substring函数的用法说明

解决1:

根据上面的思想,我可以写这样的架构'【#"%#"_______' FOR '#',试着运行一下

SELECT
 SUBSTRING (
 log_txt
 FROM
  '【#"%#"_______' FOR '#'
 ) log_txt
FROM
 operation_log
WHERE
 log_type = '15'
LIMIT 3

PostgreSQL字符切割:substring函数的用法说明

解决2:

也可以根据position这个函数来解决,这个函数类似于python的index,就是把字符串的某个字符转变为该字符所在的位置数,如此一来便可以使用substring的第一个例子用法,即

SUBSTRING ( log_txt FROM 2 FOR position('【'))

ooook 搞定了!!!

补充:Postgresql之split_part()切割函数

如下所示:

split_part(string text, delimiter text2, field int)

text要切割的字段; text2按照什么形式切割 int截取的位置

ps:

text=“name.cn” split_part(text,'.',1) 结果: name
text=“name.cn” split_part(text,'.',2) 结果: cn
text=“name.cn.com” split_part(text,'.',3) 结果: com

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。

万梅资源网 Design By www.ubjie.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
万梅资源网 Design By www.ubjie.com

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。