|
CAST 数据类型转换函数
布尔类型: 支持标准的boolean数据类型 只有TRUE FALSE两种状态,如果为unknown状态,则用NULL表示 数据类型: smalint(2字节): oracle没有此类型,使用number 代替 int(4字节) bigint(8字节) numeric(十进制精确类型):用户声明的精度,在ORACLE中叫做NUMBER real、double、precision(浮点类型) money(货币类型) 字符类型:varchar(n)、char(n)、test三种类型 二进制数据类型:只有一种bytea,他对应与mysql中BLOB与LONGBLOB,oracle中的raw 类型可以使用bytea取代 二进制字符串是一个字节序列。它和普通字符串的区别: (1)完全可以存储字节零值,普通字符串不允许存储字节零值 (2)对二进制字符串处理,实际上处理字节;对字符串的处理,则取决于区域设置 位串类型:一串0和1的字符串,有bit(n)、bit varying(n)两种 其他数据库无此类型 日期和时间:date、time、timestamp。而time和timestamp 是否包括时区两种类型 日期输入:任何日期或者时间的文本输入需要由“日期/时间” 类型加单引号包围的字符串 如果DateStyle 参数默认为“MDY” ,则表示按照“月-日-年”解析 设置日期类型: set datestyle='YMD'; 枚举类型:包含一系列有序静态值集合的数据类型,与MYSQL不同,使用之前需要使用ctreate type 创建类型,等于某些编程语言中的enum类型 每个枚举类型都是独立,不能与其他枚举类型混用;枚举类型的值大小写是敏感的。 eg:首先建立一个“week" 的枚举类型,并建立一张测试表: create type week as ENUM('Sun','Mon','Thur','Fri','Sat'); create table duty(person text,weekday week); insert into duty values('张三','Sun'); insert into duty values('李四','Mon'); insert into duty values('王二','Tues'); insert into duty values('赵五','Wed'); 试查询一条数据: select * from duty where weekday = 'Sun'; 但如果输入的字符串不再枚举类型之间,就会报错: select * from duty where weekday = 'Sun.'; 在plsql中,可以使用\dT 查看枚举类型的定义: \dT+ week 直接查询表pg_enum 可以查看枚举类型的定义; select * from pg_enum; 复合类型:把已有的简单类型组合成用户自定义类型,例如C语言中结构体,类似于从一个表名字里选出一个字段,需要用圆括号括起来避免SQL解析器混淆 eg: select person_info.name from author; (x) select (person_info).name from author;
xml类型:存储XML数据类型。使用字符串类型也可以存储XML数据,但test类型不保证其中存储是合法XML数据。
Postgre 处理字符集的问题,在客户端与服务器端进行传递数据时,会自动进行字符集转换,如果两端字符集不一致,会自动进行字符集转换 JSON类型:存储JSON(JavaScript Object Notion)类型数据,也可以使用text、varchar等类型存储JSON类型{ JSON类型是把输出数据原封不动输入到数据库中,在存放前会对JSON类型进行语法检查,使用时需要重新解析数据;在JSON串中key之间多余空格、重复key值也会保留 JSONB类型在存放时就会把解析成二进制类型;并且支持在其上建立索引,JSONB在使用时性能更高
当一个JSON字符串转换成JSONB类型,JSON字符串数据类型实际被转换成PostgreSQL 数据库类型
range:存储范围快速搜索数据,用于表示范围 create table ipdb1( ip_begin inet, ip_end inet, area text, sp text); 对象标识符类型:oid 、regproc、regclass类型 伪类型:不能作为字段数据类型、但可以作为声明函s数参数或者结果类型 其他类型:一些不好分类的类型;例如UUID、pg_lsn类型
|