暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL数据类型-Varchar

FortuneXu 2025-11-30
94

摘要:在本教程中,你将学习如何使用 PostgreSQLVARCHAR 类型在数据库中存储可变长度的字符串。

PostgreSQL VARCHAR 类型入门

CHARACTER VARYING 类型(即 VARCHAR )允许您在数据库中存储可变长度的字符串。

以下是定义 CHARACTER VARYING 类型列的语法:

column_name CHARACTER VARYING (n)

实际上,你经常会使用 VARCHAR ,它是 CHARACTER VARYING 类型的同义词:

column_name VARCHAR(n)

在这种语法中,需要指定长度说明符( n ),它是 VARCHAR 列可存储的最大字符数。n 是一个正整数,且不能超过 10,485,760

如果您尝试向该列中插入或更新超过 n 个字符的字符串,PostgreSQL 将会报错。

限制存储在数据库中的字符串长度主要有两个原因:

  • 首先,你需要在数据库层面创建一个验证规则,以确保字符串长度不超过特定长度。
  • 其次,你希望应用的用户界面因一个非常长的字符串而出现故障。

CHAR 列不同,如果存储在 VARCHAR 列中的值长度小于 nPostgreSQL 不会填充空格。

如果您想存储任意长度的字符串,可以在列定义中省略长度说明符:

column_name VARCHAR

在这种情况下,column_name 可以存储任意长度的字符串。

PostgreSQL VARCHAR 类型示例

首先,创建一个 products 表:

CREATE TABLE products ( id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name VARCHAR(50) NOT NULL, description VARCHAR );

products 表有两个 VARCHAR 列:

  • name 列最多可存储50个字符。如果尝试插入或更新长度超过50的字符串,PostgreSQL 会发出错误。
  • description 列可以存储任意长度的字符串。

"name"列有长度限制,以确保产品名称能在收据上清晰显示。没有此限制,产品名称可能会与其他信息重叠。

其次,向 products 表中插入一些行:

INSERT INTO products (name, description) VALUES ( 'Galaxy S21', 'Introducing a high-end smartphone with a 6.2-inch screen, triple camera, and 5G connectivity.' ), ( 'iPhone 16', 'Introducing the Apple latest model featuring a 6.1-inch Super Retina XDR display and A18 Bionic chip.' ) RETURNING *;

输出:

id | name | description ----+------------+------------------------------------------------------------------------------------------------------- 1 | Galaxy S21 | Introducing a high-end smartphone with a 6.2-inch screen, triple camera, and 5G connectivity. 2 | iPhone 16 | Introducing the Apple latest model featuring a 6.1-inch Super Retina XDR display and A18 Bionic chip.

第三,尝试插入一个名称超过50个字符的新产品。

INSERT INTO products(name) VALUES( 'Ultra-High Definition Quantum Dot Curved Smart TV 90-Inch');

PostgreSQL 发出了以下错误:

value too long for type character varying(50)

总结

  • 使用 VARCHAR 类型在数据库中存储可变长度的字符串。
  • 使用不带长度说明符的 VARCHAR 来存储任意长度的字符串。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论