### Informix 数据转换函数详解 #### 一、Informix 数据类型与 SQLC 数据类型的映射关系 在使用 Informix 的过程中,了解其数据类型与 SQLC(Structured Query Language Compiler)中的对应关系对于编写高效的数据处理代码至关重要。以下是一些常见 Informix 数据类型及其在 SQLC 中的对应类型: - **CHAR**: 在 SQLC 中对应 `nchar(n+1)` 或 `nchar*` 类型,用于存储固定长度的字符串。 - **SMALLINT**: 映射为 `shortint`,适用于存储小范围的整数值。 - **INTEGER / INT**: 对应 `longint` 类型,是处理一般大小整数的标准选择。 - **SMALLFLOAT**: 虽然 Informix 支持此类型,但在 SQLC 中通常使用更通用的浮点数类型来替代。 - **REAL**: 映射到 `float` 类型,在需要快速浮点运算时使用。 - **FLOAT**: 直接对应 `float` 类型。 - **DOUBLE PRECISION**: 对应 `double` 类型,用于需要更高精度的浮点运算。 - **SERIAL**: 映射为 `longint` 类型,常用于自增字段。 - **DECIMAL / DEC** / **NUMERIC**: 在 SQLC 中用 `dec_torstructdecimal` 表示,用于精确数值计算。 - **MONEY**: 同样映射为 `dec_torstructdecimal`,专门用于货币金额的存储。 - **DATETIME**: 映射到 `dtime_torstructdtime`,用于存储日期和时间组合。 - **INTERVAL**: 对应 `intrvl_torstructintrvl`,用于表示两个时刻之间的间隔。 #### 二、字符操作函数 Informix 提供了一系列用于字符操作的函数,帮助开发者进行字符串处理任务: - **rdownshift(char\*s)**: 将输入字符串中的所有大写字母转换为小写。 - **rupshift(char\*s)**: 将输入字符串中的所有小写字母转换为大写。 - **stcat(char\*s, char\*dest)**: 将两个字符串连接在一起,并将结果存储在目标字符串中。 - **stcmpr(char\*s1, char\*s2)**: 比较两个字符串是否相等。 - **stcopy(char\*from, char\*to)**: 将一个字符串复制到另一个位置。 - **stleng(char\*string)**: 返回字符串的长度(不包括结束符)。 - **bycmpr(char byte1, byte2, rptlen)**: 比较两个字节序列。 - **bycopy(char\*from, char\*to, int len)**: 复制指定长度的字节序列。 - **byfill(char\*to, int len, char ch)**: 使用特定字符填充指定长度的字节序列。 - **byleng(char\*from, int count)**: 计算有效字节序列的长度。 - **ldchar(char\*from, int num, char\*to)**: 从源字符串加载指定数量的字符到目标位置。 - **stchar(char\*from, char\*to, int num)**: 将指定数量的字符从源位置复制到目标位置。 - **rstod(char\*str, double\*dblval)**: 将字符串转换为双精度浮点数。 - **rstoi(char\*str, int\*intval)**: 将字符串转换为整数。 - **rstol(char\*str, long\*lngval)**: 将字符串转换为长整数。 #### 三、日期时间处理函数 Informix 还提供了丰富的日期时间处理函数,方便开发者处理日期时间相关的数据: - **rdefmtdate(long\*jdate, char\*frmt, char\*str)**: 将日期从 Julian 格式转换为指定格式的字符串。 - **rmdyjul(short mdy[3], long\*jdate)**: 从月日年格式的日期转换为 Julian 格式。 - **rstrdate(char\*str, long\*jdate)**: 将字符串格式的日期转换为 Julian 格式。 - **rtoday(long\*jdate)**: 获取当前系统的 Julian 格式的日期。 - **rfmtdate(ling jdate, char\*fmt, char\*str)**: 将 Julian 格式的日期转换为指定格式的字符串。 - **rjulmdy(long jdate, short mdy[3])**: 从 Julian 格式的日期转换为月日年格式。 - **rdatestr(long jdate, char\*str)**: 将 Julian 格式的日期转换为默认格式的字符串。 - **rdayofweek(long jdate)**: 返回 Julian 格式的日期所对应的星期几。 - **rleapyear(int year)**: 判断指定年份是否为闰年。 #### 四、格式化数值函数 除了基本的数据类型转换外,Informix 还支持对数值进行格式化的操作: - **rfmtdouble(double dbval, char\*fmt, char\*str)**: 将双精度浮点数转换为指定格式的字符串。 - **rfmtlong(double longval, char\*fmt, char\*str)**: 将长整数转换为指定格式的字符串。 #### 五、特殊函数 - **risnull(int type, char\*cvar)**: 检查变量是否为 NULL 值。 - **rsetnull(int type, char\*cvar)**: 设置变量为 NULL 值。 - **typalign(int pos, int type)**: 对齐类型以匹配特定的内存对齐方式。 - **rtypmsize(int sqltype, int sqllen)**: 计算给定数据类型在内存中的大小。 通过以上总结可以看出,Informix 提供了非常全面且强大的数据类型转换和处理功能,这不仅有助于提高开发效率,还能够确保数据处理过程中的准确性与可靠性。对于需要频繁处理数据库中不同类型数据的应用程序来说,掌握这些函数的使用方法是非常重要的。
一、
1、SQL与C数据类型的对应
简单类型
SQL C
CHAR(n) char(n+1)
CHARCTER(n) char *
SMALLINT short int
INTERGER
INT long int
SMALLFLOAT
REAL float
FLOAT
DOUBLE PRECISIONdouble
SERIAL long int
DATE long int
复杂类型
SQL C
DECIMAL
DEC NUMERIC dec_t or struct decimal
MONEY dec_t or struct decimal
DATETIME dtime_t or struct dtime
INREVER intrvl_t or struct intrvl
VARCHAR varchar or string
2、数据类型转换
转换类型 转换后
FLOAT DECIMAL(16)
INTERGER DECIMAL(10,0)
SAMLLINT DECIMAL(5,0)
二、数据类型的转换函数
(一)有关CHAR类型的函数
1、以空值结尾的串的操作函数
rdownshift(char *s) 把一个字符串中的所有字母转换成小写形式。
rupshift(char *s) 把一个字符串中的所有字母转换成大写形式。
stcat(char *s, char *dest) 把一个字符串同另一个字符串相连接。
stcmpr(char *s1, char *s2) 比较两个字符串。
stcopy(char *from, char *to) 把一个字符串拷贝到另一个字符串。
stleng(char *string) 统计字符串的长度。
2、定长串的操作函数
bycmpr(char byte1, byte2, rpt len) 比较两组连续的字节内存块。
bycopy(char *from, char *to, int len) 把一块内存的内容拷贝到另一块内存。
byfill(char *to, int len, char ch) 用字符填充指定的内存块。
byleng(char from, int count) 统计有效字符的数目。有效字符是指字符串去除了末尾空格所剩的字符。
3、字符串操作函数
ldchar(char *from, int num, char *to) 拷贝定长串到空值结尾的串。
stchar(char *from, char *to, int num) 拷贝空值结尾的串到定长串。
4、字符串函数简单数值转换
rstod(char *str, double *dblval) 把以空值结束的字符串转换成C的double型
rstoi(char *str, int *intval) 把以空值结束的字符串转换成C的int类型。
rstol(char *str, long *lngval) 把以空值结束的字符串转换成C的long类型。
剩余8页未读,继续阅读
- 粉丝: 0
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- cad定制家具平面图工具-(FG)门板覆盖柜体
- asp.net 原生js代码及HTML实现多文件分片上传功能(自定义上传文件大小、文件上传类型)
- whl@pip install pyaudio ERROR: Failed building wheel for pyaudio
- Constantsfd密钥和权限集合.kt
- 基于Java的财务报销管理系统后端开发源码
- 基于Python核心技术的cola项目设计源码介绍
- 基于Python及多语言集成的TSDT软件过程改进设计源码
- 基于Java语言的歌唱比赛评分系统设计源码
- 基于JavaEE技术的课程项目答辩源码设计——杨晔萌、李知林、岳圣杰、张俊范小组作品
- 基于Java原生安卓开发的蔚蓝档案娱乐应用设计源码