我的编程空间,编程开发者的网络收藏夹
学习永远不晚

PostgreSQL各数据类型的内置函数

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

PostgreSQL各数据类型的内置函数

参考《PostgreSQL实战》

3.1.2 数字类型操作符和数学函数

PostgreSQL 支持数字类型操作符和丰富的数学函数

例如支持加、减、乘、除、模取取余操作符

SELECT 1+2, 2*3, 4/2, 8%3;

按模取余

SELECT mod(8,3);
结果:2

四舍五入函数:

SELECT round(10.4) , round(10.5);
结果:10, 11

返回大于或等于给出参数的最小整数

SELECT ceil(3.6) , ceil(-3.6);
结果:4, -3

返回小于或等于给出参数的最小整数

floor(3.6) 结果:3

3.2.2 字符类型函数

PostgreSQL 支持丰富 的字符函数, 下面举例说明

计算字符串中的字符数

select char_length("abcd");
结果: 4

计算字符串占用的字节数

select octet_length("abcd");
结果: 4

指定字符在字符串中的位置(首次出现)

select position("a" in "abcda")
结果: 1
select position("x" in "abcda")
结果: 0

提取字符串中的子串

select substring("hello" from 3 for 4)
结果: llo
select substring("hello" from 4 for 1)
结果: l

拆分字符串

split_part (string text, delimiter text, field int )

根据 delimiter 分隔符拆分字符串 string,并返回指定字段,字段从 1 开始

select split_part("abc@def1@nb", "@", 1)
结果: abc

3.3.2 时间/日期类型操作符

时间 、 日期数据类型支持的操作符有加、减、乘、 除

日期相加

select date "2017-07-29" + interval"1 days"
结果: 2017-07-30 00:00:00

日期相减

select date "2017-07-29" - interval"1 hour"
结果: 2017-07-28 23:00:00

日期相乘

select 100* interval "1 second"
结果: 00:01:40

日期相除

select interval "1 hour" / double precision "3"
结果: 00:20:00

3.3.3 时间/日期类型常用函数

显示当前时间

select current_date, current_time;
结果: 2019-11-23, 20:20:55.635115+08

另一个非常重要的函数为 EXTRACT 函数,可以从日期 、 时间数据类型中抽取年、月、日、 时、分、秒信息

EXTRACT(field FROM source)

field 值可以为 century、year、 month、 day、 hour 、 minute、 second等, source类型为
timestamp、 time、 interval的值的表达式。

取年份

select extract ( year from now())
结果: 2019

月份&月份里的第几天(当前时间2019-11-24)

select extract (month from now()), extract(day from now());
结果: 11, 24

抽取小时、分钟、秒语法同上,单词为hour,minute,second

抽取当前日期是所在年份的第几周&多少天

select extract(week from now()), extract(day from now())
结果: 47, 24

3.5.3 网络地址函数

PostgreSQL 网络地址类型支持一系列内置函数,下面举例说明。

取IP地址 , 返回文本格式。

select host(cidr "192.168.1.0/24");
结果: 192.168.1.0

取IP地址和网络掩码,返回文本格式

select text(cidr "192.168.1.0/24");
结果: 192.168.1.0/24

网络地址子网掩码,返回文本格式

select netmask(cidr "192.168.1.0/24");
结果: 255.255.255.0

3.6.4 数据元素的追加、删除、更新

数组元素的追加使用array_append 函数

array_append(anyarray, anyelement)

array_append 函数向数组末端追加一个元素

select array_append(array[1,2,3], 4);
结果: {1,2,3,4}

数据元素追加到数组也可以使用操作符 ||

select array[1,2,3] || 4;
结果: {1,2,3,4}

数组元素的删除使用 array_remove 函数

array_remove(anyarray, anyelement)

array_remove 函数将移除数组中值等于给定值的所有数组元素

select array[1,2,2,3], array_remove(array[1,2,2,3], 2);
结果: {1,2,2,3}, {1,3}

数组元素修改:

update test_array_table set array_i[3] = 4 where id = 1;
UPDATE 1

更新整个数组

update test_array_table set array_i=array[7,8,9] where id = 1;
UPDATE 1

3.6.5 数组操作符

数组操作符

3.6.6 数组函数

数组维度

select array_ndims(array[1,2]);
结果: 1

数组长度(获取指定维度的长度)

select array_length(array[1,2], 1);
结果: 2

select array_length(array[[1],[2]], 2);
结果: 1
select array_length(array[[1],[2]], 1);
结果: 2

返回数组中某个数组元素第一次出现的位置

select array_position(array["a", "b", "c", "d"], "d");
结果: 4

数组元素替换可使用函数 array_replace

array replace(anyarray, anyelement, anyelement)

函数返回值类型为 anyarray,使用第二个 anyelement 替换数组中的相同数组元素

select array_replace( array[1,2,3,3,4], 3, 6);
结果: {1,2,6,6,4}

将数组元素输出到字符串,可以使用 array_to_string 函数

array_to_striiing( anyarray, text [, test])

函数返回值类型为text ,第一个text 参数指分隔符,第二个 text 表示将值为 NULL 的
元素使用这个字符串替换

select array_to_string(array[1,2,null,3], ",", "-1");
结果: 1,2,-1,3

还有array_to_json(array)函数,将数组直接转换为json

3.7.4 范围类型函数

以下列举范围类型常用函数

取范围下界

select lower(int4range(1,10));
结果: 1

取范围上界

select upper(int4range(1,10));
结果: 10

范围是否为空

select isempty(int4range(1,10));
结果: f
select isempty(int4range(10,10));
结果: t

3.8.5 jsonb与json函数

json 与 jsonb 相关的函数非常丰富, 下面举例说明

扩展最外层的 json 对象成为一组键/值结果集

select * from json_each("{"a":"foo", "b":"bar"}");
结果:
a | "foo"
b | "bar"

文本形式返回结果

select * from json_each_text('{"a":"foo", "b":"bar"}');
结果:
a | foo
b | bar

row_tojson()函数,能够将行作为json对象返回。
此函数常用来生成 json 测试数据,比如将一个普通表转换成 json 类型表

select * from test_copy where id = 1;

id | name
---+-----
1  | a

select row_to_json(test_copy) from test_copy where id = 1;

row_to_json
--------------
{"id":1,"name":"a"}

返回最外层的 json 对象中的键的集合

select * from json_object_keys('{"a":"foo", "b":"bar"}');

json_object_keys
---------------
a
b

3.8.6 jsonb 键/值的追加、删除、更新

jsonb 键/值追加可通过“||”操作符

select '{"name":"francs","age":"31"}' :: jsonb || '{"sex":"male"}' :: jsonb;

{"age": "31", "sex": "male", "name": "francs"}

jsonb 键 /值的删除有两种方法,一种是通过操作符
“-”删除,另一种通过操作符“#_”删除指定键/值

第一种

SELECT '{"name" : "James", "email": "james@localhost"}':: jsonb - 'email';
{"name": "James"}

select '["red","green","blue"]'::jsonb - 0;
["green", "blue"]

第二种 操作符“#_”删除指定键/值,通常用于有嵌套 json 数据删除的场

  • 删除嵌套contact中的fax 键值
SELECT
'{"name":"James","contant":{"phone":"01234567890", "fax":"01923 342234"}}' :: jsonb 
#-
'{contant,fax}' :: TEXT []

结果:
{"name": "James", "contant": {"phone": "01234567890"}}
  • 删除嵌套contant中,坐标为0的键值
SELECT
'{"name":"James","contant":["first", "second", "third"]}' :: jsonb 
#-
'{contant,0}' :: TEXT []

结果: 
{"name": "James", "contant": ["second", "third"]}

键/值的更新也有两种方式

  • 第一种方式为“||”操作符,“||”操作符可以连接 json键,也可以覆盖重复的键值
select '{"name":"AganRun", "age":"31"}'::jsonb || '{"age":"100"}' :: jsonb;

{"age": "100", "name": "AganRun"}
  • 第二种方式是通过jsonb_set函数
    jsonb_set(target jsonb, path text[], new_value jsonb[, create_missing boolean])

target 指源jsonb数据, path指路径, new_value 指更新后的键值, creat_missing 值为
true 表示如果键不存在则添加, create_missing 值为 false 表示如果键不存在则不添加

SELECT jsonb_set ('{"name":"francs","age":"31"}':: jsonb ,'{age}','"32"'::jsonb, false);

{"age": "32", "name": "francs"}

SELECT jsonb_set  ('{"name":"francs","age":"31"}':: jsonb ,'{sex }','"male"':: jsonb, true);

{"age": "31", "sex": "male", "name": "francs"}

数据类型转换

格式化函数、CAST函数、操作符

3.9.1 通过格式化函数进行转换

格式化函数

3.9.2 通过 CAST 函数进行转换

varchar 字符类型转换成 text 类型

select cast(varchar'123' as test);
 
123

varchar 字符类型转换成 int4 类型

select cast(varchar'123' as text);

123

3.9.3 通过::操作符进行转换

例子转换成 int4 或 numeric 类型

select 1::int4, 3/2::numeric;

1 , 1.5

三种数据类型转换方法,第-种方法兼容性相对较好,第三种方法用法简捷

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

PostgreSQL各数据类型的内置函数

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PostgreSQL各数据类型的内置函数

参考《PostgreSQL实战》3.1.2 数字类型操作符和数学函数PostgreSQL 支持数字类型操作符和丰富的数学函数例如支持加、减、乘、除、模取取余操作符SELECT 1+2, 2*3, 4/2, 8%3;按模取余SELECT mod(8,3);结果:
PostgreSQL各数据类型的内置函数
2018-03-07

PHP 函数返回哪些内置数据类型?

php函数可以返回各种内置数据类型,包括:1. 整数;2. 浮点数;3. 字符串;4. 布尔值;5. 数组;6. 对象;7. null。PHP 函数返回哪些内置数据类型?PHP 函数可以返回各种内置数据类型,包括:整数 (int)浮点数
PHP 函数返回哪些内置数据类型?
2024-04-19

数据类型内置(二)

list1,用途:多个装备,多个爱好,多门课程,2.定义:[]内可以有多个任意类型的值,逗号分隔元素优先掌握1.安索引取值2.切片3.长度4.成员运算in和not in5.追加append6.删除del7.循环需要掌握1.insert2.p
2023-01-31

PostgreSQL中json数据类型详解

目录前言一、PG数据库中jsON的类型1、json和jsonb的区别2、项目开发中的选择3、json数据类型二、PG中json的简单操作1、基础json数据操作2、json和jsonb输出对比3、jsonb包含测试总结前言
2023-04-01

Python基本数据类型综述:了解Python中的各种数据类型

Python数据类型一览:概述Python中的基本数据类型,需要具体代码示例Python是一种简洁、灵活且易于学习的编程语言,广泛应用于各个领域。在Python中,有多种数据类型用于存储和处理数据。本文将概述Python中的基本数据类型,
Python基本数据类型综述:了解Python中的各种数据类型
2024-01-20

PostgreSQL支持哪些数据类型

PostgreSQL支持多种数据类型,包括但不限于:整型数据类型:包括int、bigint、smallint等。浮点型数据类型:包括real、double precision等。字符型数据类型:包括char、varchar、text等。
PostgreSQL支持哪些数据类型
2024-04-09

PostgreSQL支持的数据类型有哪些

PostgreSQL支持的数据类型包括:整数类型:包括integer、bigint、smallint等浮点类型:包括real和double precision字符串类型:包括char、varchar、text等日期/时间类型:包括da
PostgreSQL支持的数据类型有哪些
2024-03-12

常用的PostgreSQL数据类型有哪些

PostgreSQL包含以下常用的数据类型:数值类型:整数(integer)、小数(decimal)、浮点数(float)、双精度浮点数(double precision)、十进制数(numeric)等。字符串类型:字符(character
2023-10-23

Python-集合数据类型内置方法

用途:用于关系运算的集合体,由于集合内的元素无序且集合元素不可重复,因此集合可以去重,但是去重后的集合会打乱原来元素的顺序。定义方式:{}内用逗号隔开多个元素,元素只能是不可变类型(整形、浮点型字符串),且有两个特点:1、会删除重复的值2、
2023-01-31

深入了解Python中的基本数据类型:详解Python各种数据类型

Python基本数据类型详解:了解Python中的各种数据类型,需要具体代码示例引言:在Python编程语言中,数据类型是程序中最基本也最常用的概念之一。了解Python的基本数据类型,对于编写高质量的代码和有效地处理数据至关重要。本文将
深入了解Python中的基本数据类型:详解Python各种数据类型
2024-01-20

golang函数类型的内存管理

go 语言中函数类型具有值语义,意味着当函数类型变量被赋值或传递时,其值会被复制而不是引用,因此对变量的更改不会影响其他变量的值。例如,回调函数作为参数传递给其他函数,提供定制行为。需要注意的是,闭包引用变量可能导致内存泄漏,并且函数类型变
golang函数类型的内存管理
2024-04-28

编程热搜

目录