暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase 8s ESQL/C的数据转换

Dr.王 2022-01-21
912

 当从数据库的列中获取数据时, 如果接受数据的变量类型,与数据库中列类型相比, 不是ESQL/C定义的不需要转换的类型, ESQL/C将会进行数据类型的转换。插入数据时,也会进行类似的处理。只有在必要时, ESQL/C才进行数据类型的转换。

 

1. 在numeric类型和字符串类型间转换

在ESQL/C在进行数据转换之前,必须确认转换时有意义的。

下面的表格列出了在numeric类型与字符串类型之间可能的转换, 在下面的表格中,N代表 numeric数据类型,例如DECIMAL,FLOAT,或者SMALLINT,C代表字符串数据类型,例如CHAR, VARCHAR.

如果不可能进行转换, 或者是因为没有意义,或者是因为目标变量的值范围太小,不能够接收转换后的值。

转换方式

问题

结果

C C

长度不适合

ESQL/C会截取字符串,设定警告信息,并且设定原始字符串的长度。

N C

可以

ESQL/C为numeric类型创建字符串,使用指数形式来表现过大或过小的数值。

N C

长度不合适

ESQL/C使用多个“*”填充字符串,设定警告信息。

如果是小数部分超长,会进行舍入。如果整数部分超长,以“*”填充。

C N

可以

ESQL/C根据字符串的格式确定numeric的数据类型,如果字符串包含小数点,ESQL/C将其转换为decimal类型。

C N

不是数据类型

数值为未定义,ESQL/C设定出错信息。

C N

溢出

数值为未定义,ESQL/C设定出错信息。

N N

长度不合适

ESQL/C将数值转换为新的类型,如果发生错误,设定出错信息

N N

溢出

数值为未定义,ESQL/C设定出错信息。

2. 将浮点类型的数字转换成字符串

   ESQL/C自动将浮点类型值(DECIMAL(n), FLOAT, SMALLFOAT)在数据库列和字符类型(char,varchar, string,fixchar)之间进行转换。当将浮点类型值向字符串转换时,如果字符串的buffer不是足够大,ESQL/C将对浮点类型进行舍入,之后在进行转换。

3. 将BOOLEAN类型转换为字符串

数据库服务器自动将将BOOLEAN类型的值在数据库列和fixchar类型之间转换。

‘\01’<=> ‘T’

‘\00’<=> ‘F’

4. 转换DATETIME和INTERVAL值

数据库服务器自动将将DATETIME和INTERVAL类型的值在数据库列和字符串类型,例如(char,string,fixchar)类型之间转换。

可以调用ESQL/C库函数转换DATE和DATETIME类型的值。

5. 在VARCHAR和字符数据之间进行转换

数据库服务器自动将将VARCHAR类型的值在数据库列和char, string,fixchar类型之间转换。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论