当前位置:网站首页>第二章 数据类型(一)
第二章 数据类型(一)
2022-06-10 18:07:00 【yaoxin521123】
第二章 数据类型(一)
指定 SQL 实体(如列)可以包含的数据类型。
描述
此处描述了以下主题:
支持的
DDL数据类型及其类属性映射表数据类型优先级用于从具有不同数据类型的数据值中选择最具包容性的数据类型
日期、时间、PosixTime 和时间戳数据类型
- 使用SqlCategory和用户定义的标准
- 对 1840 年 12 月 31 日之前的日期的可配置支持
支持字符串数据类型、列表数据类型和流数据类型
支持
ROWVERSION数据类型IRIS 数据平台 ODBC / JDBC 公开的数据类型
使用查询元数据方法和数据类型整数代码确定列的数据类型
创建用户定义的数据类型
处理未定义的数据类型
数据类型转换函数
数据类型指定列可以保存的值的种类。在使用 CREATE TABLE 或 ALTER TABLE 定义字段时指定数据类型。定义 SQL 字段时,可以指定下表(左列)中列出的 DDL 数据类型。当指定其中一种 DDL 数据类型时,它会映射到右侧列中列出的IRIS 数据类型类。在IRIS 中定义字段时,可以指定 DDL 数据类型或数据类型类。 DDL 数据类型名称不区分大小写。数据类型类名称区分大小写。 %Library 数据类型类可以通过全名(例如,%Library.String)或短名(%String)来指定。
它们映射到的 DDL 数据类型和数据类型类通常提供不同的参数和参数默认值。数据类型类通常提供比 DDL 数据类型更多的参数来定义允许的数据值。
要查看当前系统数据类型映射,请转到管理门户,选择系统管理、配置、SQL 和对象设置、系统 DDL 映射。

还可以定义其他用户数据类型。要创建或查看用户数据类型映射,请转到管理门户,选择系统管理、配置、SQL 和对象设置、用户 DDL 映射。
DDL 数据类型表
| DDL Data Type | Corresponding IRIS Data Type Class |
|---|---|
BIGINT | %Library.BigInt (MAXVAL=9223372036854775807, MINVAL=-9223372036854775807)如果 BIGINT 列可以同时包含 NULL 和极小的负数,需要重新定义索引空标记以支持标准索引排序规则。 |
BIGINT(%1) | %Library.BigInt %1 被忽略。相当于 BIGINT。提供 MySQL 兼容性。 |
BINARY | %Library.Binary(MAXLEN=1) |
BINARY(%1) | %Library.Binary(MAXLEN=%1) |
BINARY VARYING | %Library.Binary(MAXLEN=1) |
BINARY VARYING(%1) | %Library.Binary(MAXLEN=%1) |
BIT | %Library.Boolean . |
CHAR | %Library.String(MAXLEN=1) |
CHAR(%1) | %Library.String(MAXLEN=%1) |
CHAR VARYING | %Library.String(MAXLEN=1) |
CHAR VARYING(%1) | %Library.String(MAXLEN=%1) |
CHARACTER | %Library.String(MAXLEN=1) |
CHARACTER VARYING | %Library.String(MAXLEN=1) |
CHARACTER VARYING(%1) | %Library.String(MAXLEN=%1) |
CHARACTER(%1) | %Library.String(MAXLEN=%1) |
DATE | %Library.Date |
DATETIME | %Library.DateTime |
DATETIME2 | %Library.DateTime |
DEC | %Library.Numeric MAXVAL=999999999999999, MINVAL=-999999999999999, SCALE=0. |
DEC(%1) | %Library.Numeric 一个 64 位有符号整数。如果 %1 小于 19,则 MAXVAL 和 MINVAL 是 %1 位数。例如,DEC(8) MAXVAL=99999999,MINVAL=-99999999,SCALE=0。 %1 的最大有意义值是 19; %1 值大于 19 不会产生错误,但默认为 19。如果 %1 为 19 或更大:MAXVAL=9223372036854775807,MINVAL=-9223372036854775808,SCALE=0。 |
| DEC(%1,%2) | %Library.Numeric (`MAXVAL=< |
| DECIMAL | %Library.Numeric MAXVAL=999999999999999, MINVAL=-999999999999999, SCALE=0. |
| DECIMAL(%1) | %Library.Numeric 一个 64 位有符号整数。如果 %1 小于 19,则 MAXVAL 和 MINVAL 是 %1 位数。例如,DECIMAL(8) MAXVAL=99999999,MINVAL=-99999999,SCALE=0。 %1 的最大有意义值是 19; %1 值大于 19 不会产生错误,但默认为 19。如果 %1 为 19 或更大:MAXVAL=9223372036854775807,MINVAL=-9223372036854775808,SCALE=0。 |
| DECIMAL(%1,%2) | %Library.Numeric (`MAXVAL=< |
| DOUBLE | %Library.Double 这是 IEEE 浮点标准。具有此数据类型的 SQL 列返回的默认精度为 20。 |
| DOUBLE PRECISION | %Library.Double 这是 IEEE 浮点标准。具有此数据类型的 SQL 列返回的默认精度为 20。 |
| FLOAT | 已弃用 — %Library.Double 这是 IEEE 浮点标准。具有此数据类型的 SQL 列返回的默认精度为 20。 FLOAT(%1) 已弃用 — %Library.Double 这是 IEEE 浮点标准。具有此数据类型的 SQL 列返回的默认精度为 20。 |
| IMAGE | %Stream.GlobalBinary |
| INT | %Library.Integer (MAXVAL=2147483647, MINVAL=-2147483648) |
| INT(%1) | %Library.Integer (MAXVAL=2147483647, MINVAL=-2147483648)。 %1 被忽略。相当于 INT。提供 MySQL 兼容性。 |
| INTEGER | %Library.Integer (MAXVAL=2147483647, MINVAL=-2147483648) |
| LONG | %Stream.GlobalCharacter |
| LONG BINARY | %Stream.GlobalBinary |
| LONG RAW | %Stream.GlobalBinary |
| LONGTEXT | %Stream.GlobalCharacter 等效于 LONG。提供 MySQL 兼容性。 |
| LONG VARCHAR | %Stream.GlobalCharacter |
| LONG VARCHAR(%1) | %Stream.GlobalCharacter The %1 is ignored. |
| LONGVARBINARY | %Stream.GlobalBinary |
| LONGVARBINARY(%1) | %Stream.GlobalBinary The %1 is ignored. |
| LONGVARCHAR | %Stream.GlobalCharacter |
| LONGVARCHAR(%1) | %Stream.GlobalCharacter The %1 is ignored. |
| MEDIUMINT | %Library.Integer(MAXVAL=8388607,MINVAL=-8388608) 提供 MySQL 兼容性。 |
| MEDIUMINT(%1) | %Library.Integer(MAXVAL=8388607,MINVAL=-8388608) %1 被忽略。提供 MySQL 兼容性。 |
| MEDIUMTEXT | %Stream.GlobalCharacter |
| MONEY | %Library.Currency(MAXVAL=922337203685477.5807, MINVAL=-922337203685477.5808, SCALE=4) |
| NATIONAL CHAR | %Library.String(MAXLEN=1) |
| NATIONAL CHAR(%1) | %Library.String(MAXLEN=%1) |
| NATIONAL CHAR VARYING | %Library.String(MAXLEN=1) |
| NATIONAL CHAR VARYING(%1) | %Library.String(MAXLEN=%1) |
| NATIONAL CHARACTER | %Library.String(MAXLEN=1) |
| NATIONAL CHARACTER(%1) | %Library.String(MAXLEN=%1) |
| NATIONAL CHARACTER VARYING | %Library.String(MAXLEN=1) |
| NATIONAL CHARACTER VARYING(%1) | %Library.String(MAXLEN=%1) |
| NATIONAL VARCHAR | %Library.String(MAXLEN=1) |
| NATIONAL VARCHAR(%1) | %Library.String(MAXLEN=%1) |
| NCHAR | %Library.String(MAXLEN=1) |
| NCHAR(%1) | %Library.String(MAXLEN=%1) |
| NTEXT | %Stream.GlobalCharacter |
| NUMBER | %Library.Numeric 一个 64 位有符号整数。 (MAXVAL=9223372036854775807, MINVAL=-9223372036854775808, SCALE=0) |
| NUMBER(%1) | %Library.Numeric 一个 64 位有符号整数。如果 %1 小于 19,则 MAXVAL 和 MINVAL 是 %1 位数。例如,NUMBER(8) MAXVAL=99999999,MINVAL=-99999999,SCALE=0。 %1 的最大有意义值是 19; %1 值大于 19 不会产生错误,但默认为 19。如果 %1 为 19 或更大:MAXVAL=9223372036854775807,MINVAL=-9223372036854775808,SCALE=0。 |
| NUMBER(%1,%2) | %Library.Numeric (`MAXVAL=< |
| NUMERIC | %Library.Numeric MAXVAL=999999999999999, MINVAL=-999999999999999, SCALE=0. |
| NUMERIC(%1) | %Library.Numeric 一个 64 位有符号整数。如果 %1 小于 19,则 MAXVAL 和 MINVAL 是 %1 位数。例如,NUMERIC(8) MAXVAL=99999999,MINVAL=-99999999,SCALE=0。 %1 的最大有意义值是 19; %1 值大于 19 不会产生错误,但默认为 19。如果 %1 为 19 或更大:MAXVAL=9223372036854775807,MINVAL=-9223372036854775808,SCALE=0。 |
| NUMERIC(%1,%2) | %Library.Numeric (`MAXVAL=< |
| NVARCHAR | %Library.String(MAXLEN=1) |
| NVARCHAR(%1) | %Library.String(MAXLEN=%1) |
| NVARCHAR(%1,%2) | %Library.String(MAXLEN=%1) |
| NVARCHAR(MAX) | %Stream.GlobalCharacter 等效于 LONGVARCHAR。提供 TSQL 兼容性。 |
| POSIXTIME | %Library.PosixTime MAXVAL=1406323805406846975, MINVAL=-6979664624441081856, SCALE=0. |
| RAW(%1) | %Library.Binary(MAXLEN=%1) REAL 已弃用 — %Library.Double 这是 IEEE 浮点标准。具有此数据类型的 SQL 列返回的默认精度为 20。 |
| ROWVERSION | %Library.RowVersion(MAXVAL=9223372036854775807, MINVAL=1) 系统分配的顺序整数。 |
| SERIAL | %Library.Counter System-generated: (MAXVAL=9223372036854775807, MINVAL=1). User-supplied: (MAXVAL=9223372036854775807, MINVAL=-9223372036854775807) |
| SMALLDATETIME | %Library.DateTime MAXVAL=’2079-06-06 23:59:59’; MINVAL=’1900-01-01 00:00:00’) |
| SMALLINT | %Library.SmallInt (MAXVAL=32767, MINVAL=-32768) |
| SMALLINT(%1) | %Library.SmallInt %1 被忽略。相当于 SMALLINT。提供 MySQL 兼容性。 |
| SMALLMONEY | %Library.Currency SCALE=4 |
| SYSNAME | %Library.String(MAXLEN=128) |
| TEXT | %Stream.GlobalCharacter |
| TIME | %Library.Time |
| TIME(%1) | %Library.Time(精度=%1)。 PRECISION 是小数秒位数,一个介于 0 到 9 之间的整数值。 |
| TIMESTAMP | %Library.PosixTime |
| TIMESTAMP2 | %Library.TimeStamp |
| TINYINT | %Library.TinyInt (MAXVAL=127, MINVAL=-128) |
| TINYINT(%1) | %Library.TinyInt %1 被忽略。相当于 TINYINT。提供 MySQL 兼容性。 |
| UNIQUEIDENTIFIER) | %Library.UniqueIdentifier |
| VARBINARY) | %Library.Binary(MAXLEN=1) |
| VARBINARY(%1)) | %Library.Binary(MAXLEN=%1) |
| VARCHAR ) | %Library.String(MAXLEN=1) |
| VARCHAR(%1) ) | %Library.String(MAXLEN=%1) |
| VARCHAR(%1,%2)) | %Library.String(MAXLEN=%1) |
| VARCHAR2(%1)) | %Library.String(MAXLEN=%1) |
| VARCHAR(MAX)) | %Stream.GlobalCharacter 等效于 LONGVARCHAR。仅提供 TSQL 兼容性。 |
重要提示:上面显示的每个 DDL 或 IRIS 数据类型表达式实际上都是一个连续的字符串。这些字符串可能包含空格字符,但通常不包含任何类型的空格。为了便于阅读,此表中出现了一些空白。
指定 MAXLEN
- 无
MAXLEN:没有MAXLEN值的字段可以取任意长度的值,最多为最大字符串长度。要定义最大长度的字符串字段,请指定VARCHAR(''),这将创建数据类型为%Library.String(MAXLEN="")的属性。VARCHAR()创建数据类型为%Library.String(MAXLEN=1)的属性。要定义没有MAXLEN值的二进制字段,请指定VARBINARY(''),这将创建数据类型为%Library.Binary(MAXLEN="")的属性。VARBINARY()创建数据类型为%Library.Binary(MAXLEN=1)的属性。 - 大
MAXLEN:具有大MAXLEN值的字段仅分配实际数据值所需的空间。指定%Library.String数据类型时,指定的MAXLEN值不必与数据的实际大小密切对应。如果字段值为“ABC”, 仅使用磁盘、全局缓冲区和私有进程内存中的那么多空间。即使使用MAXLEN=1000声明该字段,私有进程内存也不会为该字段分配那么多空间。 只为字段值的实际大小分配内存,而不管声明的长度如何。
过大的 MAXLEN 值可能会影响 ODBC 应用程序。 ODBC 应用程序尝试根据来自服务器的元数据来决定所需字段的大小,因此应用程序可能会分配比实际需要更多的缓冲区空间。出于这个原因, 提供系统范围的默认 ODBC VARCHAR 最大长度 4096;此系统范围的默认设置可使用管理门户进行配置:从系统管理中选择配置,然后选择 SQL 和对象设置,然后选择 SQL。查看或设置 VARCHAR 选项的默认长度。要确定当前设置,请调用 $SYSTEM.SQL.CurrentSettings()。 ODBC 驱动程序从 TCP 缓冲区获取数据并将其转换为应用程序缓冲区,因此 MAXLEN 大小不会影响我们的 ODBC 客户端。
过大的 MAXLEN 值不应影响 JDBC 应用程序。 Java 和 .Net 没有应用程序分配缓冲区。客户端仅分配将数据保存为本机类型所需的内容。
精确度和范围
NUMERIC(6,2) 等数值数据类型具有两个整数值 (p,s) 精度和小数位数。这些映射到 ObjectScript %Library 类数据类型。在 SQL 数据类型中指定时,以下内容适用于 Windows 系统(最大值在其他系统上可能不同):
Precision精度:0到19+s(含)之间的整数。该值确定最大和最小允许值。这通常是数字中的总位数;但是,其确切值由%Library类数据类型映射决定。最大整数值为9223372036854775807。大于19+s的精度默认为19+s。- Scale:一个整数,指定允许的最大十进制(小数)位数。可以是正整数、0 或负整数。如果 s 大于或等于
p,则只允许小数,实际p值被忽略。允许的最大比例为 18,对应于0.999999999999999999。大于18的比例默认为 18。
以下示例显示了精度和比例的不同组合的最大值:
ClassMethod PrecisionScale()
{
for i = 0 : 1 : 6 {
w "Max for (",i,",2)=",$$maxval^%apiSQL(i,2),!
}
}
DHC-APP>d ##class(PHA.TEST.SQLFunction).PrecisionScale()
Max for (0,2)=.99
Max for (1,2)=.99
Max for (2,2)=.99
Max for (3,2)=9.99
Max for (4,2)=99.99
Max for (5,2)=999.99
Max for (6,2)=9999.99
边栏推荐
猜你喜欢

Request header field xxxx is not allowed by Access-Control-Allow-Headers in preflight response问题

数字化转型怎样转?朝哪转?

How can bi help enterprises reduce labor, time and management costs?

数据可视化入门学习,要警惕陷阱误区,把握关键节点

muduo源码剖析——以三个切片浅析muduo库代码设计的严谨性、高效性与灵活性

阵列信号处理仿真之四——Z变换分析阵列多项式

uniapp 原生js实现公历转农历

数据处理时代,数据分析成为基础建设

华为云鲲鹏DevKit代码迁移实战

In the introductory study of data visualization, we should be alert to pitfalls and misunderstandings and grasp key nodes
随机推荐
JS Standard
数据可视化入门学习,要警惕陷阱误区,把握关键节点
Some summary about YUV format
Enterprise data quality management: how to evaluate data quality?
AgI foundation, uncertain reasoning, subjective logic ppt2
[CEPH] CEPH configuration source code analysis | common/config*
The value of Bi in the enterprise: business analysis and development decision
Adobe Premiere Foundation (the last step of video subtitle adding) (6)
Seata installing the window environment
C语言在底层如何对double和float压栈
Adobe Premiere基础-导入导出,合并素材,源文件编译,脱机(二)
[kuangbin]专题二十二 区间DP
“双碳”背景下 数据中心规划设计的新趋势及展望
锐捷x32pro刷openwrt开启无线160MHz
AD18器件库导入简介
How can bi help enterprises reduce labor, time and management costs?
[kuangbin]专题十二 基础DP1
企业管理者的质疑,这么多年的信息化,我们的钱花哪去了?
vcsa7u3c安装教程
Anchor type and row data type of DB2 SQL pl