Postgresql数据类型-字符类型

news2024/11/26 5:49:08

PostgreSQL支持的字符类型如表所示。

character varying(n)存储的是变长字符类型,n是一个正整数,如果存储的字符串长度超出n则报错;如果存储的字符串长度比n小,character varying(n)仅存储字符串的实际位数。character(n)存储定长字符,如果存储的字符串长度超出n则报错;如果存储的字符串长度比n小,则用空白填充。为了验证此特性,下面做个实验,创建一张测试表,并插入一条测试数据,代码如下所示:

        mydb=> CREATE TABLE test_char(col1 varchar (4), col2 character(4));
        CREATE TABLE
        mydb=> INSERT INTO test_char(col1, col2) VALUES ('a', 'a');
        INSERT 0 1

表test_char的字段col1类型为character varying(4), col2类型为character(4),接下来计算两个字段值的字符串长度,代码如下所示:

        mydb=> SELECT char_length(col1), char_length(col2) FROM test_char ;
            char_length | char_length
        ----------------+-------------
                      1 |           1
        (1 row)

char_length(string)显示字符串字符数,从上面结果可以看出字符串长度都为1,接着查看两字段实际占用的物理空间大小,代码如下所示:

        mydb=> SELECT octet_length(col1), octet_length(col2) FROM test_char ;
            octet_length | octet_length
        -----------------+--------------
                        1 |             4
        (1 row)

octet_length(string)显示字符串占用的字节数,col2字段占用了4个字节,正好是col2字段定义的character长度。

值得一提的是character varying(n)类型如果不声明长度,将存储任意长度的字符串,而character(n)如果不声明长度则等效于character(1)。

text字符类型存储任意长度的字符串,和没有声明字符长度的character varying字符类型几乎没有差别。

提示:PostgreSQL支持最大的字段大小为1GB,虽然文档上说没有声明长度的character varying和text都支持任意长度的字符串,但仍受最大字段大小1GB的限制;此外,从性能上考虑这两种字符类型几乎没有差别,只是character(n)类型当存储的字符串长度不够时会用空白填充,这将带来存储空间一定程度的浪费,使用时需注意。

PostgreSQL支持丰富的字符函数,下面举例说明。计算字符串中的字符数,如下所示:

        mydb=> SELECT char_length('abcd');
          char_length
        -------------
                4
        (1 row)
        计算字符串占用的字节数,如下所示:
        mydb=> SELECT octet_length('abcd');
          octet_length
        --------------
                4
        (1 row)

指定字符在字符串的位置,如下所示:

        mydb=> SELECT position('a' in 'abcd');
          position
        ----------
                1
        (1 row)

提取字符串中的子串,如下所示:

        mydb=> SELECT substring('francs' from 3 for 4);
          substring
        -----------
          ancs
        (1 row)

拆分字符串,split_part函数语法如下:

        split_part(string text, delimiter text, field int)

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

        mydb=> SELECT split_part('abc@def1@nb', '@',2);
          split_part
        ------------
          def1
        (1 row)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1193309.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DDoS攻击剧增,深入解析抗DDoS防护方案

当下DDoS攻击规模不断突破上限,攻击方式越发复杂。面对复杂的攻击形式,对于企业和组织来说无疑需要更完备的抗DDoS方案,依靠传统的解决方法并不能做到一劳永逸。在服务器抵抗DDoS防护上,你不会忽略F5的产品,让我们一起…

aws亚马逊:什么是 Amazon EC2?

Amazon Elastic Compute Cloud(Amazon EC2)在 Amazon Web Services(AWS)云中按需提供可扩展的计算容量。使用 Amazon EC2 可以降低硬件成本,因此您可以更快地开发和部署应用程序。您可以使用 Amazon EC2 启动所需数量的…

金融帝国实验室(Capitalism Lab)官方正版游戏『最新销售政策』

「金融帝国实验室」(Capitalism Lab)Enlight 官方正版游戏「2023双11特卖」 ■优惠时限:2023.11.01~11.30 ■游戏开发商:Enlight Software Ltd. 请您认准以下官方正版游戏购买链接:支持“支付宝&am…

OPC DA客户端工具Opc quick client使用

OPC DA客户端工具Opc quick client使用 什么是OPC OPC是工业控制和生产自动化领域中使用的硬件和软件的接口标准,以便有效地在应用和过程控制设备之间读写数据。O代表OLE(对象链接和嵌入),P (process过程),C (control控制)。 OPC服务器包括…

【MySQL】表的增删改查(强化)

作者主页:paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《MySQL》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造&a…

一分钟秒懂人工智能对齐

文章目录 1.什么是人工智能对齐2.为什么要研究人工智能对齐3.人工智能对齐的常见方法 1.什么是人工智能对齐 人工智能对齐(AI Alignment)指让人工智能的行为符合人的意图和价值观。 人工智能系统可能会出现“不对齐”(misalign)…

Linux--gcc与make

文章目录 gcc/g的使用背景知识gcc与ggcc的编译过程预处理编译汇编链接 函数库自动化构建工具--make三个时间伪目标文件其他表示方法mybin的推导过程 gcc/g的使用 背景知识 GCC是一个开源的编译器套件,支持多种编程语言,并提供了广泛的语言特性和标准库…

真的设计师做图只需要一个炫云客户端就够了

真的设计师做图只需要一个炫云客户端就够了,为什么这么说呢?因为炫云的这个客户端功能真的太全了,设计师想要的功能在炫云客户端上都有,而且还很多功能是免费的,非常的实用,具体有哪些功能我们一起来看看吧…

无人机航迹规划:五种最新智能优化算法(SWO、COA、LSO、GRO、LO)求解无人机路径规划MATLAB

一、五种算法(SWO、COA、LSO、GRO、LO)简介 1、蜘蛛蜂优化算法SWO 蜘蛛蜂优化算法(Spider wasp optimizer,SWO)由Mohamed Abdel-Basset等人于2023年提出,该算法模型雌性蜘蛛蜂的狩猎、筑巢和交配行为&…

一键批量转码:将MP4视频转为MP3音频的简单方法

随着数字媒体设备的普及,视频和音频格式转换的需求也越来越常见。其中,将MP4视频批量转换为MP3音频的需求尤为普遍。无论是为了提取视频中的背景音乐,还是为了在手机或电脑上方便地收听视频音频,这个过程都变得非常重要。接下来我…

数字滤波器设计---FIR 滤波器设计

数字滤波器设计---FIR 滤波器设计 FIR 滤波器与 IIR 滤波器的比较 与无限持续时间冲激响应 (IIR) 滤波器相比,具有有限持续时间冲激响应的数字滤波器(全零或 FIR 滤波器)既有优点又有缺点。 FIR 滤波器具有以下主要优点: 它们可…

Java中的反射机制

获取字节码文件对象的三种方式 1,(常用)源代码阶段,Class.forName("全类名") 2,(传参)加载阶段 类名.class 3,(前提有对象)运行阶段 对象.getClas…

LeetCode算法心得——全排列(回溯型排列)

大家好,我是晴天学长,排列型的回溯,需要的小伙伴可以关注支持一下哦!后续会继续更新的。💪💪💪 1) .全排列 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按…

外贸企业GMS认证|SD-WAN专线解决方案支持 IPv6、IPv4

IP地址是英文internet protocol的缩写,是网络之间互连的协议。互联网诞生后,很长一段时间都是使用v4版本的IP协议,也就是 IPv4 ,目前全球使用互联网的人数达到了48.8亿,而IPv4的地址库总共约43亿个地址,每个…

CCLink转Modbus TCP网关_MODBUS报文配置

兴达易控CCLink转Modbus TCP网关是一种功能强大的设备,可实现两个不同通信协议之间的无缝对接。它能够将CCLink协议转换为Modbus TCP协议,并通过报文配置实现灵活的通信设置。兴达易控CCLink转Modbus TCP网关可以轻松实现CCLink和Modbus TCP之间的数据转…

竞赛 车道线检测(自动驾驶 机器视觉)

0 前言 无人驾驶技术是机器学习为主的一门前沿领域,在无人驾驶领域中机器学习的各种算法随处可见,今天学长给大家介绍无人驾驶技术中的车道线检测。 1 车道线检测 在无人驾驶领域每一个任务都是相当复杂,看上去无从下手。那么面对这样极其…

2011年09月06日 Go生态洞察:Go语言的反射法则

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

STM32——STM32F4系统架构

文章目录 前言STM32F4XX系统架构 前言 本篇文章为STM32F4系列的系统架构,因为最近在学习F4的板子,暂时先更F4的,有需要F1的后续再更新。 主系统由 32 位多层 AHB 总线矩阵构成,可实现以下部分的互连: STM32F4XX系统架…

(自适应移动端)响应式门窗定制pbootcms板 门窗门业网站板下载-带视频功能

(自适应移动端)响应式门窗定制pbootcms模板 门窗门业网站模板下载-带视频功能 PbootCMS内核开发的网站模板,该模板适用于门窗门业网站等企业,当然其他行业也可以做,只需要把文字图片换成其他行业的即可; 自适应移动端,…

款网络拓扑自动扫描工具

Topology-Scanner是WeOps团队免费开放的一个网络拓扑自动扫描模块,可以自动发现网络设备的类型、网络设备之间的互联 使用方式 java -jar ./topology-scanner.jar --config_path./config/ 配置说明 1. 拓扑发现请求参数文件(request.json) ips [全网发现] 模式时…