返回首页

gbase数据、南大通用产品文档:GBase8aCREATE TABLE LIKE

更新日期:2024年09月11日

Like 形式创建表允许用户复制一个存在的表定义(不复制它的数据)。新的表格是
空的,没有任何一行数据。
示例
示例1:通过Hive 表创建一个新的空hive 表。
gbase> CREATE TABLE t_hive1(stu_n int,name varchar(30))ENGINE = 'HIVE';
Query OK, 0 rows affected
gbase> CREATE TABLE t_hive LIKE t_hive1;
Query OK, 0 rows affected

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 622

rdefmtdate() 函数使用格式化掩码来将字符串转换为内部的 DATE 格式。

语法
mint rdefmtdate(jdate, fmtstring, inbuf)
int4 *jdate;

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 854 -
char *fmtstring;
char *inbuf;
jdate
指向接收 inbuf 字符串的内部 DATE 值的 int4 整数值的指针。
fmtstring
指向包含要使用 inbuf 字符串的的格式化掩码的缓冲区的指针。
inbuf
指向包含要转换的日期字符串的缓冲区的指针。
用法
rdefmtdate() 函数的 fmtstring 参数指向日期格式化掩码,其包含描述
如何解释该日期字符串的格式。

input 字符串和 fmtstring 必须以相同的月份、日期和年份的序列顺序。然而,它们不
需要包含相同的文字,或月份、日期和年份的相同表示。

在 fmtstring 中,您可包括 weekday 格式(ww),但数据库服务器忽略该格式。inbuf
中没有与 weekday 格式对应的内容。

下列 fmtstring 与 input 的组合是有效的。
格式化掩码输入
mmddyy
Dec. 25th, 2007
mmddyyyy
Dec. 25th, 2007
mmm. dd. yyyy
dec 25 2007
mmm. dd. yyyy
DEC-25-2007
mmm. dd. yyyy
122507
mmm. dd. yyyy
12/25/07
yy/mm/dd

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 855 -
07/12/25
yy/mm/dd
2007, December 25
yy/mm/dd
In the year 2007, the month of December, it is the 25th day
dd-mm-yy
This 25th day of December 2007

如果存储在 inbuf 中的值是四位年份。则 rdefmtdate() 函数使用那个值。如果存储在
inbuf 中的值是两位年份,
则 rdefmtdate() 函数使用 DBCENTURY 环境变量的值来确定要
使用哪个世纪。如果您未设置 DBCENTURY,则 GBase 8s ESQL/C 使用 20 世纪。

返回代码
如果您使用无效的日期字符串格式,则 rdefmtdate() 返回错误代码,并将该内部的
DATE 设置为当前日期。下列为可能的返回代码。
0
操作成功。
-1204
*input 参数指定无效的年份。
-1205
*input 参数指定无效的月份。
-1206
*input 参数指定无效的日期。
-1209
由于 *input 不包含年份、月份和日期之间的定界符,则 *input 的长度必须恰好为 6
或 8 字节。
-1212
*fmtstring 未指定年份、月份和日期。

示例
demo 目录在 rdefmtdate.ec 文件中包含此样例程序。
/*
* rdefmtdate.ec *

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

The following program accepts a date entered from the console, converts it into the internal
date format using rdefmtdate(). It checks the conversion by finding the day of the week.
*/

#include

main()
{
mint x;
char date[20];
int4 i_date;
char *day_name;

static char fmtstr[9] = "mmddyyyy";

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

printf("Enter a date as a single string, month.day.year\n");
gets(date);

printf("\nThe date string is %s.\n", date);

if (x = rdefmtdate(&i_date, fmtstr, date))
printf("Error %d on rdefmtdate conversion\n", x);
else
{
/* Figure out what day of the week i_date is */
switch (rdayofweek(i_date))
{
case 0: day_name = "Sunday";
break;
case 1: day_name = "Monday";

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 857 -
break;
case 2: day_name = "Tuesday";
break;
case 3: day_name = "Wednesday";
break;
case 4: day_name = "Thursday";
break;
case 5: day_name = "Friday";
break;
case 6: day_name = "Saturday";
break;
}
printf("\nThe day of the week is %s.\n", day_name);
}

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

Enter a date as a single string, month.day.year
080894

The date string is 080894
The day of the week is Monday.
RDEFMTDATE Sample Program over.

SET 数据类型是存储唯一元素的无序集合类型
如 GBase 8s SQL 指南:语法 中所述,重复的元素值无效。(有关支持重复值的集
合类型,请参阅 MULTISET(e) 数据类型中对 MULTISET 的描述。)
可以将相同表的不超过 97 列声明为 SET 数据类型。(同一限制还适用于 MULTISET
和 LIST 集合类型。)
SET 中的元素没有按顺序的位置。也就是说,在 SET 中不存在第一、第二或第三元
素的构造。(有关具有元素的顺序位置的集合类型,请参阅 LIST(e) 数据类型。)SET 中
的所有元素都具有相同的元素类型。要指定元素类型,使用以下语法:
SET(element_type NOT NULL)
集合的 element_type 可以是下列任何类型:
内置类型(SERIAL、SERIAL8、BIGSERIAL、BYTE 和 TEXT 除外)
命名或未命名 ROW 类型
其他集合类型
不透明类型

必须对 SET 元素指定 NOT NULL 约束。对于 SET 列,没有任何其他约束有效。有关

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 112 -
SET 集合类型语法的更多信息,请参阅 GBase 8s SQL 指南:语法。
除非另有指示,否则可以在使用任何其他数据类型的地方使用 SET。例如:
在用来搜索匹配的 SET 值的 SELECT 语句 WHERE 子句中的 IN 谓词后面
作为用来确定 SET 列中的元素数目的 CARDINALITY 或 mi_collection_card( )
函数的自变量
不能将 SET 值用作聚集函数(例如,AVG、MAX、MIN 或 SUM)的自变量。有关更多
信息,请参阅 GBase 8s SQL 指南:语法 中的 Condition 和 Expression 两节。
下面的示例声明两个集合。第一条语句声明一组整数,第二条语句声明一组字符元
素。
SET(INTEGER NOT NULL)
SET(CHAR(20) NOT NULL)
下面的示例从值列表中构造相同的集合:
SET{1, 5, 13}
SET{"Oakland", "Menlo Park", "Portland", "Lenexa"}
在以下示例中,SET 构造函数是 CREATE TABLE 语句的一部分:
CREATE TABLE tab
(
c CHAR(5),
s SET(INTEGER NOT NULL)
);
下列 set 值相等:
SET{"blue", "green", "yellow"}
SET{"yellow", "blue", "green"}