PostgreSQL教程(五):函数和操作符详解(1)


一、逻辑操作符:

    常用的逻辑操作符有:AND、OR和NOT。其语义与其它编程语言中的逻辑操作符完全相同。

二、比较操作符:

    下面是PostgreSQL中提供的比较操作符列表:

比较操作符可以用于所有可以比较的数据类型。所有比较操作符都是双目操作符,且返回boolean类型。除了比较操作符以外,我们还可以使用BETWEEN语句,如:
    a BETWEEN x AND y 等效于 a >= x AND a <= y   
    a NOT BETWEEN x AND y 等效于 a < x OR a > y

三、 数学函数和操作符:

    下面是PostgreSQL中提供的数学操作符列表:

按位操作符只能用于整数类型,而其它的操作符可以用于全部数值数据类型。按位操作符还可以用于位串类型bit和bit varying,

    下面是PostgreSQL中提供的数学函数列表,需要说明的是,这些函数中有许多都存在多种形式,区别只是参数类型不同。除非特别指明,任何特定形式的函数都返回和它的参数相同的数据类型。

三角函数列表:

四、字符串函数和操作符:

    下面是PostgreSQL中提供的字符串操作符列表:

 

函数 返回类型 描述 例子 结果
string || string text 字串连接 'Post' || 'greSQL' PostgreSQL
bit_length(string) int 字串里二进制位的个数 bit_length('jose') 32
char_length(string) int 字串中的字符个数 char_length('jose') 4
convert(string using conversion_name) text 使用指定的转换名字改变编码。 convert('PostgreSQL' using iso_8859_1_to_utf8) 'PostgreSQL'
lower(string) text 把字串转化为小写 lower('TOM') tom
octet_length(string) int 字串中的字节数 octet_length('jose') 4
overlay(string placing string from int [for int]) text 替换子字串 overlay('Txxxxas' placing 'hom' from 2 for 4) Thomas
position(substring in string) int 指定的子字串的位置 position('om' in 'Thomas') 3
substring(string [from int] [for int]) text 抽取子字串 substring('Thomas' from 2 for 3) hom
substring(string from pattern) text 抽取匹配 POSIX 正则表达式的子字串 substring('Thomas' from '...$') mas
substring(string from pattern for escape) text 抽取匹配SQL正则表达式的子字串 substring('Thomas' from '%#"o_a#"_' for '#') oma
trim([leading | trailing | both] [characters] from string) text 从字串string的开头/结尾/两边/ 删除只包含characters(缺省是一个空白)的最长的字串 trim(both 'x' from 'xTomxx') Tom
upper(string) text 把字串转化为大写。 upper('tom') TOM
ascii(text) int 参数第一个字符的ASCII码 ascii('x') 120
btrim(string text [, characters text]) text 从string开头和结尾删除只包含在characters里(缺省是空白)的字符的最长字串 btrim('xyxtrimyyx','xy') trim
chr(int) text 给出ASCII码的字符 chr(65) A
convert(string text, [src_encoding name,] dest_encoding name) text 把字串转换为dest_encoding convert( 'text_in_utf8', 'UTF8', 'LATIN1') 以ISO 8859-1编码表示的text_in_utf8
initcap(text) text 把每个单词的第一个子母转为大写,其它的保留小写。单词是一系列字母数字组成的字符,用非字母数字分隔。 initcap('hi thomas') Hi Thomas
length(string text) int string中字符的数目 length('jose') 4
lpad(string text, length int [, fill text]) text 通过填充字符fill(缺省时为空白),把string填充为长度length。 如果string已经比length长则将其截断(在右边)。 lpad('hi', 5, 'xy') xyxhi
ltrim(string text [, characters text]) text 从字串string的开头删除只包含characters(缺省是一个空白)的最长的字串。 ltrim('zzzytrim','xyz') trim
md5(string text) text 计算给出string的MD5散列,以十六进制返回结果。 md5('abc')  
repeat(string text, number int) text 重复string number次。 repeat('Pg', 4) PgPgPgPg
replace(string text, from text, to text) text 把字串string里出现地所有子字串from替换成子字串to。 replace('abcdefabcdef', 'cd', 'XX') abXXefabXXef
rpad(string text, length int [, fill text]) text 通过填充字符fill(缺省时为空白),把string填充为长度length。如果string已经比length长则将其截断。 rpad('hi', 5, 'xy') hixyx
rtrim(string text [, character text]) text 从字串string的结尾删除只包含character(缺省是个空白)的最长的字 rtrim('trimxxxx','x') trim
split_part(string text, delimiter text, field int) text 根据delimiter分隔string返回生成的第field个子字串(1 Base)。 split_part('abc~@~def~@~ghi', '~@~', 2) def
strpos(string, substring) text 声明的子字串的位置。 strpos('high','ig') 2
substr(string, from [, count]) text 抽取子字串。 substr('alphabet', 3, 2) ph
to_ascii(text [, encoding]) text 把text从其它编码转换为ASCII。 to_ascii('Karel') Karel
to_hex(number int/bigint) text 把number转换成其对应地十六进制表现形式。 to_hex(9223372036854775807) 7fffffffffffffff
translate(string text, from text, to text) text 把在string中包含的任何匹配from中的字符的字符转化为对应的在to中的字符。 translate('12345', '14', 'ax') a23x5

五、位串函数和操作符:

    对于类型bit和bit varying,除了常用的比较操作符之外,还可以使用以下列表中由PostgreSQL提供的位串函数和操作符,其中&、|和#的位串操作数必须等长。在移位的时候,保留原始的位串的的长度。

除了以上列表中提及的操作符之外,位串还可以使用字符串函数:length, bit_length, octet_length, position, substring。此外,我们还可以在整数和bit之间来回转换,如:

复制代码 代码如下:

    MyTest=# SELECT 44::bit(10);
        bit
    ------------
     0000101100
    (1 row)
    MyTest=# SELECT 44::bit(3);
     bit
    -----
     100
    (1 row)
    MyTest=# SELECT cast(-44 as bit(12));
         bit
    --------------
     111111010100
    (1 row)
    MyTest=# SELECT '1110'::bit(4)::integer;
     int4
    ------
       14
    (1 row)

    注意:如果只是转换为"bit",意思是转换成bit(1),因此只会转换成整数的最低位。

    该博客中提供的所有信息均源自PostgreSQL官方文档,编写该篇博客的主要目的是便于今后的查阅,特此声明。



相关阅读:
win10系统中运行记录该怎么清除?win10清除运行记录的方法
详解MySQL中的存取权限
带有css3动画效果的兼容多浏览器简单导航条示例
jquery库文件略庞大用纯js替换jquery的方法
JS实现仿微博可关闭弹出层效果
Asp.Net中Cache操作类实例详解
简单实现轮播图效果的实例
AngularJS 模块详解及简单实例
SQL Server常用存储过程及示例
jQuery实现的淡入淡出二级菜单效果代码
为jQuery添加Webkit的触摸的方法分享
HTML5通用接口详解
苹果Mac OS系统终端命令大全介绍
使用jQuery Mobile框架开发移动端Web App的入门教程
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 沙湾县-伊宁东 红果-六枝 虎尔虎拉-白城 九台-松树镇 余姚北-渭南北 镇远-海阳 肥东-随州 潮汕-普宁 长春-柳州 安图西-敦化 北碚-鹤壁 南京南-焦作 集宁南-景泰 滕州-长春 绣峰-哈达阳 霞浦-南京南 弥渡-沙桥 黔江-牙屯堡 枣强-南昌 上海南-汉口 嘉兴-三堂集 济南西-滕州东 天门-缙云 古田北-抚州东 富裕-嫩江 常州-德阳 青沟子-仙人桥 绍兴东-萍乡北 抚顺北-白山市 水家湖-上海 镇江-礼泉 金马村-平关 葛店南-华容东 萍乡北-芷江 大连-保康 大庆-龙江 兖州-沈阳 上饶-镇远 民权-蚌埠 板石河-枕头峰 扶余-济南东 吕梁-阳泉北 农安-盖州 海林-拉古 容县-赤壁 大庆西-北京 沧州-襄阳 南宁-北碚 咸阳-砀山 宜良北-兴义 民权北-永州 滦县-洛阳 东来-敖来 潮汕-上海虹桥 福鼎-无锡新区 平凉-长武 台州-温岭 松江-太平川 阳新-沁县 西峡-株洲 荆门-永州 长沙-红果 祁阳-杭州东 泉阳-龙井 丹东-锦州 萍乡北-福州 牛家营子-老府 邓家湾-二道桥 徐闻-锦州 韦庄-阎良 海宁西-潮阳 中卫-沟帮子 甘河-羊草 南平南-廊坊北 镇城底-太原 新余北-常州北 卫星-林口 云梦-德阳 阜阳-临城 葛根庙-桑根达来 四川农业大学各个专业的学费情况 还有雅安校区的专业有哪些?
从张家口那个站坐什么车到北京四惠桥
北戴河火车列车站前修路最近的6路站点在哪
怎么走从龙岗天虹到深圳市罗湖区嘉宾路1号阳光酒店B座写字
从海南海口到湖南郴州的飞行线路
大连到南宁特价机票有吗
苏州高铁在火车列车站北广场坐还是原来那个老火车列车站坐
要是打电话买火车列车票或是飞机票,管送吗,要是送的话需要加钱吗
从佛山市火车站到南海区黄岐街怎么走
景德镇到上海 下后是哪个火车列车站
重庆到湖南衡山高速路自驾怎么坐车
长春到包头怎么坐车便宜还快
威海南曲阜经济适用房准购证领到后去哪里报名
紧萧山有没有晚上去余姚的火车列车帮忙说下时间,,
从汉口到阜阳的客车时间和价钱
菏泽到淮蚌埠的火车列车
中考现在考不考七年级的 考试重点又在那里
江苏南京到山东邹城快递时间大概多少小时
想知道: 武汉市 从武汉新洲中心客运站到武汉黄陂汽车客车客运中心
从绍兴到九华山怎么坐车最快,而且是白天到的大概多少钱
驾车从深圳到广安的路线
从通辽到大连中途路过哪些站
安阳道口滑县老店牛新庄怎么走
烟台龙口污染厉害么?我去那里看房子,刚到龙口发现有好几个大
郑州到银川高速路路线
列车火车票K301徐州-广州可以提前几天售票
2002年至2009年泉州变化的作文
从梅县到深圳的列车火车一天几趟和出发时间,要多少钱,到深圳的
我如果卖从广州到淄博的卧铺票,请问可以从赣州上火车嘛
闻一多的事迹

Copyright © 2016 phpStudy |