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
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"}