返回首页

gbase数据、南大通用产品文档:GBase8aexpr IN (value,)

更新日期:2024年09月11日

语法
expr IN (value,...)
函数说明
如果expr 是IN 列表中的任一值,它将返回1,否则返回0。
如果IN 列表中的所有值均是常量,那么所有的值被按照expr 的类型进行计算和
排序。
如果左边的表达式是NULL,或者在列表中没有发现相匹配的值并且列表中的一
个表达式是NULL,IN 均返回NULL。
IN()语法也可以用于子查询类型。
示例
示例1:expr 不是IN 列表中的任一值。
gbase> SELECT 2 IN (0,3,5,'8') FROM dual;
+------------------+
| 2 IN (0,3,5,'8') |

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
656
+------------------+
|
0 |
+------------------+
1 row in set
示例2:expr 是IN 列表中的值。
gbase> SELECT '1' IN (0,3,5,'1') as v_1,'1' IN (0,3,5,NULL) as v_null FROM
dual;
+-----+--------+
| v_1 | v_null |
+-----+--------+
|
1 |
NULL |
+-----+--------+
1 row in set
示例3:expr 的值为NULL。
gbase> SELECT NULL IN (0,3,5,'wefwf') FROM dual;
+-------------------------+
| NULL IN (0,3,5,'wefwf') |
+-------------------------+
|
NULL |
+-------------------------+
1 row in set
示例4:子查询中包含IN()函数。
示例中用到的表及数据:
CREATE TABLE sc (sno VARCHAR(4), grade INT);
INSERT INTO sc VALUES ('101',82),('102',59),('103',90),('104',88),('106',82);
查询所有课程都及格的同学的学号。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
657
gbase> SELECT sno FROM sc WHERE grade IN (SELECT grade FROM sc
WHERE grade>60) GROUP BY sno;
+------+
| sno
|
+------+
| 103
|
| 101
|
| 104
|
| 106
|
+------+
4 rows in set

使用 onspaces -s 选项来更改在非临界 dbspace 、
blobspace 或 sbspace 中的 dbspace 、

主 chunk 的镜像 chunk 的状态。
语法:

该命令有等同的 SQL 管理 API 命令。
元素
用途
关键注意事项
-D
指示您要关闭 chunk

-o offset 指示为到达 chunk 而发生
的磁盘分区或设备中的偏
移量(千字节)
限制: U无符号整数。开始偏移量必须大于等于
0 。开始偏移量加 chunk 大小不能超过最大
chunk 大小。该偏移量必须是页大小的倍数。
最大偏移量是 4 太字节。
有关更多信息,请参阅 GBase
8s 管理员指南 中
的 管理磁盘空间 一章中的 在 UNIX™ 上分配原

GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 429 -

元素
用途
关键注意事项
始磁盘空间
-O
指示您要恢复 chunk 并使
它联机

-p
pathname
指示 chunk 的磁盘分区或
未缓冲设备
Chunk 必须是现有的未缓冲设备或已缓冲文件。
指定路径名时,可以使用完整路径名或相对路径
名。然而,如果使用相对路径名,这必须相对于
是初始化数据库服务器时的当前目录的目录。
有关路径名语法,请参阅操作系统文档
-s
指示您想要更改 chunk 的
状态
限制:只能更改镜像对中的 chunk 或在非临界
dbspace 中的非主 chunk 的状态。
有关更多信息,请参阅 GBase
8s 管理员指南 中
的 更改镜像状态
-y
导致数据库服务器自动对
所有提示响应“是”

blobspace 给出想要更改其状态的
blobspace 的名称
语法必须符合 Identifier 段;请参阅 《GBase
8s SQL 指南:语法》。有关更多信息,请参阅
GBase 8s 管理员指南 中的 更改镜像状态
dbspace
给出想要更改其状态的
dbspace 的名称
语法必须符合 Identifier 段;请参阅 《GBase
8s SQL 指南:语法》。有关更多信息,请参阅
GBase 8s 管理员指南 中的 更改镜像状态
sbspace
给出想要更改其状态的
sbspace 的名称
语法必须符合 Identifier 段;请参阅 《GBase
8s SQL 指南:语法》。有关背景信息,请参阅
GBase 8s 管理员指南 中的 更改镜像状态

deccvdbl() 函数将 C double 类型数值转换为 decimal 类型数值。
语法
mint deccvdbl(dbl_val, np)
double dbl_val;
dec_t *dec_val;
dbl_val
deccvdbl() 转换为 decimal 类型值的 double 值。
dec_val
指向 deccvdbl() 在其中放置转换结果的 decimal 结构的指针。

结果代码

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 631 -
0
转换成功。
<0
转换失败。

示例

demo 目录中的 deccvdbl.ec 文件包含下列样例程序。
/*
* deccvdbl.ec *
The following program converts two double type numbers to DECIMAL numbers and
displays the results.
*/

#include

EXEC SQL include decimal;

char result[41];


main()
{
mint x;
dec_t num;
double d = 2147483647;

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

printf("Number 1 (double) = 1234.5678901234\n");
if (x = deccvdbl((double)1234.5678901234, #))
{
printf("Error %d in converting double1 to DECIMAL\n", x);

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 632 -
exit(1);
}
if (x = dectoasc(#, result, sizeof(result), -1))
{
printf("Error %d in converting DECIMAL1 to string\n", x);
exit(1);
}
result[40] = '\0';
printf(" String Value = %s\n", result);

printf("Number 2 (double) = $.1f\n", d);
if (x = deccvdbl(d, #))
{
printf("Error %d in converting double2 to DECIMAL\n", x);
exit(1);
}
if (x = dectoasc(#, result, sizeof(result), -1))
{
printf("Error %d in converting DECIMAL2 to string\n", x);
exit(1);
}
result[40] = '\0';
printf(" String Value = %s\n", result);

printf("\nDECCVDBL Sample Program over.\n\n");
exit(0);
}
输出
DECCVDBL Sample ESQL Program running.

Number 1 (double) = 1234.5678901234
String Value = 1234.5678901234
Number 2 (double) = 2147483647.0

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 633 -
String Value = 2147483647.0
DECCVDBL Sample Program over.