返回首页

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

更新日期:2024年09月11日

VARCHAR(m)
存储的是变长字符串,m 表示该列中串的字符长度,其范围对于utf8 字符集是1
到10922 个字符,对于gbk 字符集是1 到16383 个字符。
当存储VARCHAR 类型的数据时,不会用空格填充补足列定义长度,存储的数据
包含空格时,保留空格。
示例

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
631
示例1:VARCHAR 数据类型不会补足列定义的长度,但会保留插入的数据中的
空格。
示例中所用的表及数据:
gbase> CREATE TABLE products (productName VARCHAR(100));
gbase> INSERT INTO products(productName) VALUES('南大通用');
gbase> INSERT INTO products(productName) VALUES('
南大通用');
gbase> SELECT productName,
LENGTH(productName) AS length,
CHAR_LENGTH(productName) AS char_length FROM products;
+----------------+--------+-------------+
| productName
| length | char_length |
+----------------+--------+-------------+
| 南大通用
|
12 |
4 |
|
南大通用
|
14 |
6 |
+----------------+--------+-------------+
2 rows in set
gbase> SELECT productName FROM products WHERE productName = '南
大通用';
+--------------+
| productName
|
+--------------+
| 南大通用
|
+--------------+
1 row in set
查询结果中保留原始数据中的空格:
gbase> SELECT productName FROM products WHERE productName = '
南大通用';
+----------------+
| productName
|
+----------------+
|
南大通用
|
+----------------+
1 row in set

[gbasedbt@PRIMARY ~]$ onstat -g sds
Your evaluation license will expire on 2021-04-27 00:00:00

GBase Database Server Version 12.10.FC4G1TL -- On-Line -- Up 00:02:03 -- 198912 Kbytes

Local server type: Primary
Number of SDS servers:1

SDS server information

SDS srv SDS srv Connection Last LPG sent Supports
name status status (log id,page) Proxy Writes
gbaseserver1 Active Connected 1,27814 N
在SSC1:192.168.5.101节点执行onstat -g sds 可以看到Soruce server信息。
[gbasedbt@SSC1 ~]$ onstat -g sds
Your evaluation license will expire on 2021-04-27 00:00:00

GBase Database Server Version 12.10.FC4G1TL -- Read-Only (SDS) -- Up 00:02:05 -- 198912
Kbytes

Local server type: SDS
Server Status : Active
Source server name: gbaseserver
Connection status: Connected
Last log page received(log id,page): 1,27814
然后在SSC2:192.168.5.102节点执行oninit -vy。此时在PRIMARY:192.168.5.100节点执
行onstat -g sds看到第二台SSC2也加入了。
[gbasedbt@PRIMARY ~]$ onstat -g sds
Your evaluation license will expire on 2021-04-27 00:00:00

GBase Database Server Version 12.10.FC4G1TL -- On-Line -- Up 00:04:53 -- 198912 Kbytes

Local server type: Primary
Number of SDS servers:2

GBase 8s 共享存储集群安装手册
南大通用数据技术股份有限公司 - 9 -

SDS server information

SDS srv SDS srv Connection Last LPG sent Supports
name status status (log id,page) Proxy Writes
gbaseserver1 Active Connected 1,27826 N
gbaseserver2 Active Connected 1,27826 N
至此SSC安装成功。

dtcvasc() 函数将符合 ANSI SQL 标准的 DATETIME 值的字符串转换为
datetime 值。
要获取关于 ANSI SQL DATETIME 标准的信息,请参阅 DATETIME 和
INTERVAL 值的 ANSI SQL 标准。
语法
mint dtcvasc(inbuf, dtvalue)
char *inbuf;
dtime_t *dtvalue;
inbuf
指向包含 ANSI 标准 DATETIME 字符串的缓冲区的指针。
dtvalue
指向初始化的 datetime 变量的指针。

用法
您必须以您想要此变量拥有的限定符,来初始化 dtvalue 中的 datetime 变量。

inbuf 中的字符串必须有符合 year to second 限定符的值,该限定符的格式为 ANSI
SQL。
inbuf 字符串可有开头的和结尾的空格。
然而,
从第一个有效位至最后一个,
inbuf 仅
可包含符合 ANSI SQL 标准的 DATETIME 值的数字和定界符的字符。


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

如果您指定年份值作为一个或两个数字,
则 dtcvasc() 函数假定该年份在当前世纪中。
您可设置该 DBCENTURY 环境变量来确定,当您省略来自该日期的世纪时,dtcvasc() 使
用哪个世纪。

如果该字符串为空字符串,则 dtcvasc() 函数将 dtvalue 指向的值设置为空。如果该
字符串是可接受的,则函数设置 datetime 变量中的值,并返回零。否则,函数保持该变量
不变,并返回负的错误代码。

返回代码
0
转换成功。
-1260
不可能在指定的类型之间转换。
-1261
在 datetime 或 interval 的第一个字段中数字太多。
-1262
在 datetime 或 interval 中的非数值字符。
-1263
在 datetime 或 interval 值中的字段超出范围或不正确。
-1264
在 datetime 或 interval 的末尾存在额外的字符。
-1265
在 datetime 或 interval 运算上发生溢出。
-1266
datetime 或 interval 值与该运算不兼容。
-1267
datetime 计算的结果超出范围。
-1268
参数包含无效的 datetime 限定符。
示例
demo 目录在 dtcvasc.ec 文件中包含此样例程序。
/*

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

* dtcvasc.ec *
The following program converts ASCII datetime strings in ANSI SQL format into datetime
(dtime_t) structure.
*/

#include

EXEC SQL include datetime;

main()
{
mint x;

EXEC SQL BEGIN DECLARE SECTION;
datetime year to second dt1;
EXEC SQL END DECLARE SECTION;

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

printf("Datetime string #1 = 2007-02-11 3:10:35\n");
if (x = dtcvasc("2007-02-11 3:10:35", &dt1))
printf("Result = failed with conversion error: %d\n", x);
else
printf("Result = successful conversion\n");

/*
* Note that the following literal string has a 26 in the hours place
*/
printf("\nDatetime string #2 = 2007-02-04 26:10:35\n");
if (x = dtcvasc("2007-02-04 26:10:35", &dt1))
printf("Result = failed with conversion error: %d\n", x);
else
printf("Result = successful conversion\n");

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


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

Datetime string #1 = 2007-02-11 3:10:35
Result = successful conversion

Datetime string #2 = 2007-02-04 26:10:35
Result = failed with conversion error:-1263
DTCVASC Sample Program over.