首页 > 其他分享 >Postgres 的 Array 类型

Postgres 的 Array 类型

时间:2024-12-25 11:45:56浏览次数:3  
标签:Postgres Students 音乐 ------------- interest 类型 Array Copy

Postgres 的 Array 类型| Id | Title | DateAdded | SourceUrl | PostType | Body | BlogId | Description | DateUpdated | IsMarkdown | EntryName | CreatedTime | IsActive | AutoDesc | AccessPermission |

| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------|
| 14296601| Postgres 的 Array 类型| 2021-01-19T10:31:00| | BlogPost|

mysql 不支持 Array 类型


一、Postgres 原生SQL#


适用场景:可以用于实现贴标签功能

1、定义#


Copy
CREATE TABLE "Students"
(
   name VARCHAR(255),
   interest VARCHAR(255)[]
)

2、插入#


(1) 方法一#
Copy
INSERT INTO "Students"
VALUES
('colin',
'{"音乐", "电影", "读书"}'
)

注意1:双引号单引号这里不能混用:'{"音乐", "电影", "读书"}'

注意2:插入后在数据库查看是{音乐,电影,读书} ,而不是{'音乐','电影','读书'}

(2) 方法二 —— 数组构造函数#
Copy
INSERT INTO "Students"
VALUES
('colin',
 ARRAY['音乐', '电影', '读书']
)

注意:这里只能用单引号:ARRAY['音乐', '电影', '读书']

3、访问#


(1) 取一个#
Copy
select interest[1] from "Students" where id = 1

注意:这里 interest[1] 不能用引号

return:

Copy
'音乐'

注:这里的数组索引值不是从 0 开始的

(2) 取多个#
Copy
select interest[1:2] from "Students" where id = 1

return:

Copy
{音乐,电影}
(3) 取所有#
Copy
select "interest" from "Students" where id = 1

return:

Copy
{音乐,电影,读书}

[拓展]

Postgres 引号 使用规律的总结:

不用引号:内置函数、当键名是数组而取索引值时
单引号:值、当键名是数组而取索引值时、json字段取value值("edu_experience"->'name')
双引号:表名、键名、值里面嵌套的值

4、修改#


Copy
update "Students" set interest[2] = '睡觉' where id = 1; 

{音乐,睡觉,读书} => {音乐,睡觉,读书}

5、搜索#


ANY()

Copy
select "interest" from "Students" where '睡觉' = ANY("interest");

return:

Copy
{音乐,睡觉,读书}

6、展开数组#


unnest()

Copy
select unnest("interest") from "Students" where '睡觉' = ANY("interest");

return:

Copy
音乐
睡觉
读书

二、与 Sequelize 协作#


Sequelize如何定义array类型?

Copy
interest: DataTypes.ARRAY(DataTypes.STRING),

原生的 Postgres 有两点:

1、数组的形式不是 [] 包裹而是 {}

2、数组的索引不是从 0 开始而是从 1 开始

3、[未知]用 navicat 查看 table design,本来 define 为 array 的 interest 字段显示的确是 varchar 类型

而用 Sequelize 很好的把这些差异给抹平了,你可以直接采用数组的方式去与数据库做交互操作


参考资料

1.[Postgres 指南-数组] http://postgresguide.com/cool/arrays.html
2.[PostgreSQL Array] http://www.postgresqltutorial.com/postgresql-array/

| 648658| | 2021-01-19T10:31:00| false| | 2021-01-19T10:31:11.22| true| mysql 不支持 Array 类型 一、Postgres 原生SQL# 适用场景:可以用于实现贴标签功能 1、定义# Copy CREATE TABLE "Students" ( name VARCHAR(255), interest VARCHAR(255)[] ) 2、插入# (1) 方法一#| Anonymous|

标签:Postgres,Students,音乐,-------------,interest,类型,Array,Copy
From: https://www.cnblogs.com/ralphlauren/p/18621290

相关文章

  • jstl一些标签 中timestamp类型在页面去掉时分秒!
    jstl一些标签中timestamp类型在页面去掉时分秒!|Id|Title|DateAdded|SourceUrl|PostType|Body|BlogId|Description|DateUpdated|IsMarkdown|EntryName|CreatedTime|IsActive|AutoDesc|AccessPermission||-------------|-------------|--------......
  • C# 数据类型全解析:深入理解编程基石
    在C#编程的世界里,数据类型犹如大厦的基石,支撑着整个程序的构建与运行。对数据类型有透彻的理解,是编写高效、可靠代码的关键。本文将带您深入探索C#中的数据类型,揭示其奥秘与应用之道。一、值类型与引用类型的本质区别C#的数据类型总体上可分为值类型和引用类型,这一区分......
  • CSS允许使用哪些不同的媒介类型?
    CSS允许使用多种不同的媒介类型来定义样式,这些媒介类型可以根据呈现设备的特性进行分类。以下是一些常见的CSS媒介类型:all:适用于所有媒介设备,不区分具体的呈现方式。aural:用于语音和音频合成器,这类设备会将文本信息转换为语音输出。不过,请注意,这个媒介类型在现代CSS中使用较......
  • 4.3 类型转换实例
    【例4.5】将图像从BGR模式转换为RGB模式。importcv2importnumpyasnplena=cv2.imread("/Users/zhaofeier/Desktop/lenacolor.png")rgb=cv2.cvtColor(lena,cv2.COLOR_BGR2RGB)cv2.imshow("lena",lena)cv2.imshow("rgb",rgb)cv2.waitKey()......
  • C语言中常见的数据类型及其处理方式
    1.数据类型整型整型所占字节int4字节unsignedint0~2^32-1signedint-2^31~2^31-1short2字节unsignedshort0~65535signedshort-32768~32767long8字节unsignedlong0~2^32-1signedlong-2^31~2^31-1longlong8字节unsingnedlo......
  • 深度探秘神经网络模型:核心要点、多样类型与实践应用
    基本概念神经元与生物启发:人工神经网络受人类大脑中的生物神经元启发,生物神经元由细胞体、树突和轴突等组成,可处于兴奋或抑制状态,通过突触传递信息。神经网络组成:由大量相互连接的神经元组成,包括输入层接收数据、隐藏层处理数据、输出层产生最终结果,各层神经元通过权重连接,还有......
  • 机器学习全解析:基础概念、任务类型、算法模型、应用及未来挑战与走向
    一、引言机器学习作为人工智能领域的核心分支,旨在让计算机系统从数据中自动学习模式和规律,以实现对未知数据的预测和决策。在当今数字化时代,机器学习已经广泛应用于各个领域,从图像识别、语音识别到金融预测、医疗诊断等,为解决复杂问题提供了强大的工具和方法。二、机器学习基础......
  • 上面这段代码,?的作用是: 如果返回Result::OK(T),则f类型为T; 如果返回Result::Err(error)
    usestd::fs::File;usestd::io;usestd::io::Read;fnread_username_from_file()->Result<String,io::Error>{letmutf=File::open("hello.txt")?;letmuts=String::new();f.read_to_string(&muts)?;Ok(s)}上面这......
  • .NET Core 类型系统(Types System)底层原理浅谈
    C#类型系统C#是一种强类型语言。每个变量和常量都有一个类型,每个求值的表达式也是如此。每个方法声明都为每个输入参数和返回值指定名称、类型和种类(值、引用或输出)。.NET类库定义了内置数值类型和表示各种构造的复杂类型。其中包括文件系统、网络连接、对象的集合和数组以......
  • js中有哪些类型的弹出框?
    在JavaScript和前端开发中,有几种常见的弹出框(或称为对话框)类型。这些弹出框可以帮助你与用户进行交互,提供信息,或者请求输入。以下是一些主要的类型:警告框(Alert):alert()函数是JavaScript中最简单的弹出框类型。它显示一个带有指定消息和OK按钮的警告框。例如:alert("这是一个警......