返回首页

gbase数据、南大通用产品文档:GBase8aSMALLINT

更新日期:2024年09月11日

整数类型。它的取值范围是-32767 到32767,SMALLINT 占用2 个字节。

值存储数据类型解析
1.
查找与目标字段准确的匹配。
2.
试着将表达式直接转换成目标类型。
如果已知这两种类型之间存在一个已注册的转换函
数,
那么直接调用该转换函数即可。
如果表达式是一个未知类型文本,
该文本字符串的
内容将交给目标类型的输入转换过程。
3.
检查一下看目标类型是否有长度转换。
长度转换是一个从某类型到自身的转换。
如果在
pg_cast 表里面找到一个,那么在存储到目标字段之前先在表达式上应用。这样的转换
函数总是接受一个额外的类型为integer 的参数,
它接收目标字段的atttypmod 值(实际
上是其声明长度,atttypmod 的解释随不同的数据类型而不
同)
,并且它可能接受一
个Boolean 类型的第三个参数,
表示转换是显式的还是隐式的。
转换函数负责施加那些
长度相关的语义,比如长度检查或者截断。
示例
character 存储类型转换。对一个目标列定义为character(20)的语句,下面的语句显示存
储值的长度正确:
gbase=#CREATE TABLE tpcds.value_storage_t1 ( VS_COL1 CHARACTER(20));
gbase=#INSERT INTO tpcds.value_storage_t1 VALUES('abcdef');
gbase=#SELECT VS_COL1, octet_length(VS_COL1) FROM tpcds.value_storage_t1;
vs_col1
| octet_length
----------------------+--------------
abcdef
(1 row)
gbase=#DROP TABLE tpcds.value_storage_t1;

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
619

这里真正发生的事情是两个unknown 文本缺省解析成text,这样就允许||操作符解
析成text 连接。然后操作符的text 结果转换成bpchar("空白填充的字符型",
character 类型内部名称)以匹配目标字段类型。不过,从text 到bpchar 的转换是二
进制兼容的,这样的转换是隐含的并且实际上不做任何函数调用。最后,在系统
表里找到长度转换函数bpchar(bpchar, integer, Boolean) 并且应用于该操作符的结
果和存储的字段长。这个类型相关的函数执行所需的长度检查和额外的空白填充。

名称
描述
存储空间
取值
BOOLEAN
布尔类型
1 字节。

true:真

false:假

null:未知

“真”值的有效文本值是:
TRUE、
't'、
'true'、
'y'、
'yes'、
'1' 、
'TRUE'、
true、
整数范围内1~2^63-1、
整数范围内-1~-2^63。

“假”值的有效文本值是:
FALSE、'f'、'false'、'n'、'no'、'0'、0、'FALSE'、false。
使用TRUE 和FALSE 是比较规范的用法(也是SQL 兼容的用法)

示例
显示用字母t 和f 输出Boolean 值。
--创建表。
gbase=# CREATE TABLE bool_type_t1 (BT_COL1 BOOLEAN, BT_COL2 TEXT);
CREATE TABLE
--插入数据。
gbase=# INSERT INTO bool_type_t1 VALUES (TRUE, 'sic est');
INSERT 0 1
gbase=# INSERT INTO bool_type_t1 VALUES (FALSE, 'non est');
INSERT 0 1
--查看数据。
gbase=# SELECT * FROM bool_type_t1;

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
51
bt_col1 | bt_col2
---------+---------
t
| sic est
f
| non est
(2 rows)
gbase=# SELECT * FROM bool_type_t1 WHERE bt_col1 = 't';
bt_col1 | bt_col2
---------+---------
t
| sic est
(1 row)
--删除表。
gbase=# DROP TABLE bool_type_t1;
DROP TABLE