PostgreSQL 10.1 手册_部分 II. SQL 语言_第 10 章 类型转换_10.4. 值存储
10.4. 值存储
将被插入到一个表的值会按照下列步骤被转换到目标列的数据类型。
值存储类型转换
检查一个与目标的准确匹配。
否则,尝试转换表达式为目标类型。如果在两种类型之间的一个 赋值造型已经被注册在
pg_cast
目录(见CREATE CAST)中, 这是可能的。或者,如果该表达式是一个未知类型的文字, 则该文字串的内容将被提供给目标类型的输入转换例程。检查是否有一个用于目标类型的尺寸调整造型。尺寸调整造型是一个从该类型到其自身的造型。 如果在
pg_cast
目录中找到一个,那么把表达式存储到目标列中之前把它应用到表达式。这样一个造型的实现函数总是采用一个额外的integer
类型的参数,它接收目标列的atttypmod
值(通常是它被声明的长度,尽管对于不同数据类型atttypmod
有不同的解释),并且它可能采用第三个boolean
参数来说明造型是显式的还是隐式的。该造型函数负责应用任何长度相关的语义,例如尺寸检查或截断。
例 10.8. 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
(“blank-padded char”空白填充字符,character
数据类型的内部名称)来匹配目标列类型(由于从text
到bpchar
的转换是二进制强制的,这个转换不会插入任何实际的函数调用)。最后,尺寸调整函数bpchar(bpchar, integer, boolean)
被从系统目录中找到并应用到操作符的结果和存储的列长度上。这个类型相关的函数执行必要的长度检查并增加填充的空间。
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 10 章 类型转换_10.4. 值存储相关推荐
- PostgreSQL 10.1 手册_部分 II. SQL 语言_第 8 章 数据类型_8.6. 布尔类型
8.6. 布尔类型 PostgreSQL提供标准的SQL类型boolean,参见表 8.19.boolean可以有多个状态:"true(真)"."false(假)&quo ...
- PostgreSQL 10.1 手册_部分 II. SQL 语言_第 9 章 函数和操作符_9.23. 行和数组比较
9.23. 行和数组比较 9.23.1. IN9.23.2. NOT IN9.23.3. ANY/SOME (array)9.23.4. ALL (array)9.23.5. 行构造器比较9.23.6 ...
- PostgreSQL 10.1 手册_部分 II. SQL 语言_第 14 章 性能提示_14.1. 使用EXPLAIN
14.1. 使用EXPLAIN 14.1.1. EXPLAIN基础 14.1.2. EXPLAIN ANALYZE 14.1.3. 警告 PostgreSQL为每个收到查询产生一个查询计划. 选择正确 ...
- PostgreSQL 10.1 手册_部分 II. SQL 语言_第 9 章 函数和操作符_9.4. 字符串函数和操作符...
9.4. 字符串函数和操作符 9.4.1. format 本节描述了用于检查和操作字符串值的函数和操作符.在这个环境中的串包括所有类型character.character varying和text的 ...
- PostgreSQL 10.1 手册_部分 II. SQL 语言_第 8 章 数据类型_8.10. 位串类型
8.10. 位串类型 位串就是一串 1 和 0 的串.它们可以用于存储和可视化位掩码.我们有两种类型的 SQL 位类型:bit(n)和bit varying(n),其中 n是一个正整数. bit类型的 ...
- PostgreSQL 10.1 手册_部分 II. SQL 语言_第 12 章 全文搜索_12.4. 额外特性
12.4. 额外特性 12.4.1. 操纵文档12.4.2. 操纵查询12.4.3. 用于自动更新的触发器12.4.4. 收集文档统计数据 这一节描述在文本搜索中有用的一些额外的函数和操作符. 12. ...
- PostgreSQL 10.1 手册_部分 II. SQL 语言_第 5 章 数据定义_5.11. 外部数据
5.11. 外部数据 PostgreSQL实现了部分的SQL/MED规定,允许我们使用普通SQL查询来访问位于PostgreSQL之外的数据.这种数据被称为外部数据(注意这种用法不要和外键混淆,后者是 ...
- PostgreSQL 10.1 手册_部分 II. SQL 语言_第 9 章 函数和操作符_9.15. JSON 函数和操作符...
9.15. JSON 函数和操作符 表 9.43展示了可以用于两种 JSON 数据类型(见第 8.14 节)的操作符. 表 9.43. json和jsonb 操作符 操作符 右操作数类型 描述 例子 ...
- PostgreSQL 10.1 手册_部分 II. SQL 语言_第 5 章 数据定义_5.5. 修改表
5.5. 修改表 5.5.1. 增加列5.5.2. 移除列5.5.3. 增加约束5.5.4. 移除约束5.5.5. 更改列的默认值5.5.6. 修改列的数据类型5.5.7. 重命名列5.5.8. 重命 ...
最新文章
- RK3288 双屏异显,两屏默认方向不一致
- RabbitMQ 3.6 安装
- ActiveRecord教程
- java 取对象的类_Java中通过Class类获取Class对象的方法详解
- 如何判断车与路边线距离_一声惊雷!开车怎么判断轮胎的位置呢?驾校教练:简单一招就能看到位置!...
- ros中web端通过 按钮加载本地静态 pgm 地图显示在canvas画布中
- 通用采集器Modbus协议应用
- 181016扇贝有道词霸每日一句
- vue中点击,将内容复制到剪贴板
- Embedding Projector
- JPA学习笔记之接口JpaRepository 和 JpaSpecificationExecutor的简单使用
- 集成电路ic是什么?
- SCI-15种投稿状态
- C++中的引用变量详解
- PHP如何解决swoole守护进程Redis假死 ,mysql断线重连问题?
- 谈Java语言规范之枚举类型
- 清晨为何不能空腹喝蜂蜜水
- centos7 gam_server进程导致CPU使用率100%,系统负载很高
- Element 组件之 右键鼠标 自定义菜单
- 1579. 保证图可完全遍历