举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > PostgreSQL 值存储

PostgreSQL 值存储

2023-05-22 16:18 PostgreSQL 值存储

 PostgreSQL 值存储

将被插入到一个表的值会按照下列步骤被转换到目标列的数据类型。

值存储类型转换

  1. 检查一个与目标的准确匹配。

  2. 否则,尝试转换表达式为目标类型。如果在两种类型之间的一个 赋值造型已经被注册在pg_cast 目录(见CREATE CAST)中, 这是可能的。或者,如果该表达式是一个未知类型的文字, 则该文字串的内容将被提供给目标类型的输入转换例程。

  3. 检查是否有一个用于目标类型的尺寸调整造型。尺寸调整造型是一个从该类型到其自身的造型。 如果在pg_cast目录中找到一个,那么把表达式存储到目标列中之前把它应用到表达式。这样一个造型的实现函数总是采用一个额外的integer类型的参数,它接收目标列的atttypmod值(通常是它被声明的长度,尽管对于不同数据类型 atttypmod有不同的解释),并且它可能采用第三个boolean参数来说明造型是显式的还是隐式的。该造型函数负责应用任何长度相关的语义,例如尺寸检查或截断。

例 10.9. character存储类型转换

对于一个声明为character(20)的目标列,下面的语句展示了被存储的值如何被正确地调整尺寸:

CREATE TABLE vv (v character(20));
INSERT INTO vv SELECT "abc" || "def";
SELECT v, octet_length(v) FROM vv;

          v           | octet_length
----------------------+--------------
 abcdef               |           20
(1 row)

实际发生的事情是两个未知文字被默认决定为text,允许||操作符被决定为text连接。 然后操作符的text结果被转换成bpchar空白填充字符character数据类型的内部名称)来匹配目标列类型(由于从textbpchar的转换是二进制强制的,这个转换不会插入任何实际的函数调用)。最后,尺寸调整函数bpchar(bpchar, integer, boolean)被从系统目录中找到并应用到操作符的结果和存储的列长度上。这个类型相关的函数执行必要的长度检查并增加填充的空间。



阅读全文
以上是编程学为你收集整理的 PostgreSQL 值存储全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
  •  PostgreSQL 网络地址函数和操作符

    PostgreSQL 网络地址函数和操作符

    2023-05-17

    IP网络地址类型,cidr和inet,支持表9.1所示的常用比较操作符, 以及表9.38 和 表9.39所示的专用操作符和函数。任何cidr 值都可...

  •  PostgreSQL CLOSE

    PostgreSQL CLOSE

    2023-06-09 PostgreSQL CLOSE

    CLOSE — 关闭一个游标大纲CLOSE { name | ALL }描述 CLOSE释放与一个已打开游标相关 的资源。在游标被关闭后,不允许在其上做后...

  •  PostgreSQL CREATE OPERATOR FAMILY

    PostgreSQL CREATE OPERATOR FAMILY

    2023-03-28

    CREATE OPERATOR FAMILY — 定义一个新的操作符族大纲CREATE OPERATOR FAMILY name USING index_method描述 CREATE OPERATOR FAM...

  •  PostgreSQL POSIX 时区规范

    PostgreSQL POSIX 时区规范

    2023-05-03

    PostgreSQL可以接受根据POSIX标准的针对TZ环境变量的规则编写的时区规范。 POSIX时区规范不足以处理真实世界时区历史的复杂性,...

  •  PostgreSQL DELETE

    PostgreSQL DELETE

    2023-04-29 PostgreSQL DELETE

    DELETE — 删除一个表的行大纲[ WITH [ RECURSIVE ] with_query [, ...] ]DELETE FROM [ ONLY ] table_name [ * ] [ [ AS ] ...

© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部