返回首页

gbase数据、南大通用产品文档:GBase8s格式化数值字符串

更新日期:2024年09月11日

数字格式化掩码指定要应用于某些数值的格式。

此掩码是以下格式字符的组合:

*
此字符在显示字段中以空白填充任何位置的星号。
&
此字符将填充任何空白的显示字段中的任何位置。
#
该字符将前面位置的零更改为空白。使用此字符指定字段的最大值的左侧范围。

<
该字符左对齐显示字段中的数字。它将前导零更改为空字符串。
,
该字符指示在值的全数部分中分隔三位数组(从单位位置向左计数)的符号。缺
省情况下,此符号是逗号。您可以使用 DBMONEY 环境变量设置符号。在格式化的数字
中,只有当该值的全数部分具有四位或更多位数时,才会出现该符号。
.
该字符表示将货币值的全数部分与小数部分分开的符号。缺省情况下,此符号是
一个句点。
您可以使用 DBMONEY 环境变量设置此符号。
格式字符串中只能有一个句点。
-
这个字符是一个文字。当 expr1 小于零时,它显示为负号。当您连续排列几个减
号,单个减号会浮动到可占据的最右侧位置,它不会干扰数字及其货币符号。
+
该符号是一个文字。当 expr1 大于等于零时,它显示为加号。当 expr1 小于零
时,它显示为负号。当您连续组合几个加号时,单个加号或减号会浮动到可占据的最右侧
位置,它不会干扰数字及其货币符号。

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 116 -

(
该符号是一个文字。它显示负数左侧的左括号。它是一对会计括号中的一个,用
于替换负数的括号。当您连续组合几个时,单个左括号将浮动到可占据的最右侧位置,它
不会干扰数字及其货币符号。
)
这是用于替换负值的负号的一对会计括号之一。
$
该字符显示出现在数值前面的货币符号。
缺省情况下,
货币符号是美元符号
($)

可以使用 DBMONEY 环境变量设置此符号。当您连续组合几个美元符号时,单个货币符
号浮动到可以占据的最右侧位置,它不会干扰这个数字。

格式化掩码中的任何其它字符在结果中字面上复制。

当您在格式化掩码中使用以下字符时,字符为 float;即,掩码中图案左侧的多个字符
出现在格式化数字中尽可能向右的单个字符(不删除有效数字) :

-
+
(
)
$

例如:如果对数字 1234.56 应用掩码 $$$,$$$.## ,则该结果为 $1,234.56。

当您使用 rfmtdec() 、rfmtdouble() 或 rfmtlong() 格式化 MONEY 值时,函数使用
DBMONEY 环境变量指定的货币符号。
如果未设置此环境变量,
则数字格式化函数使用客
户端语言环境定义的的货币符号。缺省情况使用美国英语定义货币符号,就像将
DBMONEY 设置为 “$,.”。
数字表达式的示例格式字符串
下表显示了数字表达式的示例格式字符串。字母 b 代表空格或空白。

表 8. 样本格式模式及结果
格式化掩码
数值
格式化结果
"#####"
0


GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 117 -

格式化掩码
数值
格式化结果
"&&&&&"
"$$$$$"
"*****"
"<<<<<"
0
0
0
0
bbbbb 00000 bbbb$ *****
(空字符串)

“##,###”
"##,###"
"##,###"
"##,###"
"##,###"
"##,###"
"##,###"
12345
1234
123
12
1
-1
0

12,345 b1,234 bbb123
bbbb12 bbbbb1 bbbbb1 bbbbbb

"&&,&&&"
"&&,&&&"
"&&,&&&"
"&&,&&&"
"&&,&&&"
"&&,&&&"
"&&,&&&"
12345
1234
123
12
1
-1
0
12,345
01,234
000123
000012
000001
000001
000000
"$$,$$$"
"$$,$$$"
"$$,$$$"
"$$,$$$"
"$$,$$$"
"$$,$$$"
"$$,$$$"
"$$,$$$"
(DBMONEY 设置为
DM)
12345
1234
123
12
1
-1
0
1234

*****(溢出)

$1,234 bb$123 bbb$12
bbbb$1 bbbb$1
bbbbb$ DM1,234

"**,***"
"**,***"
"**,***"
"**,***"
12345
1234
123
12
12,345
*1,234
***123
****12

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 118 -

格式化掩码
数值
格式化结果
"**,***"
"**,***"
1
0
*****1
******
"##,###.##"
"##,###.##"
"##,###.##"
"##,###.##"
"##,###.##"
"##,###.##"
"##,###.##"
"##,###.##"
"##,###.##"

SQLStatistics 检索有关单个表的统计信息和与该表相关联的索引信息。
驱动程序将此消息作为结果集返回。
下表描述了 SQLStatistics 的 SQLSTATE 和错误值。
SQLSTATE
错误值
错误消息
01000
-11001
General warning
08S01
-11020
Communication-link failure

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 241 -
SQLSTATE
错误值
错误消息
24000
-11031
Invalid cursor state
S1000
-11060
General error
S1001
-11061
Memory- allocation failure
S1008
-11065
Operation canceled
S1010
-11067
Function-sequence error
S1090
-11071
Invalid string or buffer length
S1100
-11081
Uniqueness option type out of range
S1101
-11082
Accuracy option type out of range
S1C00
-11092
Driver not capable
S1T00
-11094
Time-out expired
S1C00
-11300
SQL_DEFAULT_PARAM not supported
08S01
-11301
A protocol error has been detected. Current connection is
closed.
S1000
-11310
Create and Drop must be executed within a ServerOnly
Connection
S1000
-11320
Syntax error
S1000
-11323
The statement contained an escape clause not supported by
this database driver

rstoi() 函数将以空终止的字符串转换为 short integer 值。

语法

mint rstoi(string, ival)
char *string;
mint *ival;
string
指向以空终止的字符串的指针。
ival
指向保存转换了的值的 mint 值的指针。

用法
值的合法范围为 -32767 - 32767。值 -32768 不是有效的,因为此值为指示空的保留
值。

如果 string 对应于空整数,则 ival 指向 SMALLINT 空的表示。要转换对应于 long
integer 的字符串,请使用 rstol()。该操作的失败可导致错误的数据表示。

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 901 -


返回代码
=0
转换成功。
!=0
转换失败。

示例

此样例程序在 demo 目录中的 rstoi.ec 文件中。
/*
* rstoi.ec *
The following program tries to convert three strings to integers. It displays the result of
each conversion.
*/

#include

EXEC SQL include sqltypes;

main()
{
mint err;
mint i;
short s;

printf("RSTOI Sample ESQL Program running.\n\n");

i = 0;
printf("Converting String 'abc':\n");
if((err = rstoi("abc", &i)) == 0)
printf("\tResult = %d\n\n", i);
else

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 902 -

printf("\tError %d in conversion of string #1\n\n", err);

i = 0;
printf("Converting String '32766':\n");
if((err = rstoi("32766", &i)) == 0)
printf("\tResult = %d\n\n", i);
else
printf("\tError %d in conversion of string #2\n\n", err);

i = 0;
printf("Converting String '':\n");
if((err = rstoi("", &i)) == 0)
{
s = i; /* assign to a SHORT variable */
if (risnull(CSHORTTYPE, (char *) &s))
/* and then test for NULL */
printf("\tResult = NULL\n\n");
else
printf("\tResult = %d\n\n", i);
}
else
printf("\tError %d in conversion of string #3\n\n", err);

printf("\nRSTOI Sample Program over.\n\n");
}
输出
RSTOI Sample ESQL Program running.

Converting String 'abc':
Error -1213 in conversion of string #1

Converting String '32766':
Result = 32766

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 903 -


Converting String '':
Result = NULL

RSTOI Sample Program over.