返回首页

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

更新日期:2024年09月11日

ENCRYPT(str[,salt])
函数说明
使用Linux 的crypt()系统调用来加密str。参数salt 是一个至少包含两个字符的字
符串。如果salt 没有给定,会使用一个随机数值。
示例
因未给定salt 值,使用随机数值对“hello”进行加密。
gbase> SELECT ENCRYPT('hello') FROM dual;
+------------------+
| ENCRYPT('hello') |
+------------------+

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
841
| y/oLk8SmVyZXg
|
+------------------+
1 row in set
说明
ENCRYPT()在一些系统上忽略除了str 前8 个字符之外的全部字符,
这个行为通过使用crypt()系统调用来决定。
如果crypt()在用户的系统上不可用,ENCRYPT()总是返回NULL,
所以推荐用户使用MD5()或SHA1(),这两个函数存在于所有平台上。

可以在使用表达式的任何地方使用数据转换函数。
下列转换函数在日期与字符串之间转换:

DATE 函数
DATE 函数将字符串转换为 DATE 值。
在以下查询中,
DATE 函数将字符串转换为 DATE
值,
以允许与 DATETIME 值进行比较。
仅当 call_dtime值比指定的 DATE 晚时查询才会检
索 DATETIME 值。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 92 -

图: 查询
SELECT customer_num, call_dtime, res_dtime
FROM cust_calls
WHERE call_dtime > DATE ('12/31/97');
图: 查询结果
customer_num call_dtime res_dtime

106 1998-06-12 08:20 1998-06-12 08:25
110 1998-07-07 10:24 1998-07-07 10:30
119 1998-07-01 15:00 1998-07-02 08:21
121 1998-07-10 14:05 1998-07-10 14:06
127 1998-07-31 14:30
仅当 call_dtime 大于或等于指定日期时,
下列查询才会将 DATETIME 值转换为 DATE 格
式并带标签显示这些值。
图: 查询
SELECT customer_num,
DATE (call_dtime) called,
DATE (res_dtime) resolved
FROM cust_calls
WHERE call_dtime >= DATE ('1/1/98');
图: 查询结果
customer_num called resolved

106 06/12/1998 06/12/1998
110 07/07/1998 07/07/1998
119 07/01/1998 07/02/1998
121 07/10/1998 07/10/1998
127 07/31/1998

TO_CHAR 函数
TO_CHAR 函数将 DATETIME 或 DATE 值转换为字符串值。
TO_CHAR 函数根据您指定
的日期格式化伪指令对 DATETIME 值进行求值并返回 NVARCHAR 值。
有关受支持的日
期格式化伪指令的列表,请参阅《GBase 8s GLS 用户指南》 GL_DATETIME 环境变量的
描述。
还可以使用 TO_CHAR 函数将 DATETIME 或 DATE 值转换为 LVARCHAR 值。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 93 -

下列查询使用 TO_CHAR 函数将 DATETIME 值转换为可读性更强的字符串。
图: 查询
SELECT customer_num,
TO_CHAR(call_dtime, "%A %B %d %Y") call_date
FROM cust_calls
WHERE call_code = "B";
图: 查询结果
customer_num 119
call_date Friday July 01 1998
下列查询使用 TO_CHAR 函数将 DATE 值转换为可读性更强的字符串。
图: 查询
SELECT order_num,
TO_CHAR(ship_date,"%A %B %d %Y") date_shipped
FROM orders
WHERE paid_date IS NULL;
图: 查询结果
order_num 1004
date_shipped Monday May 30 1998

order_num 1006
date_shipped

order_num 1007
date_shipped Sunday June 05 1998

order_num 1012
date_shipped Wednesday June 29 1998

order_num 1016
date_shipped Tuesday July 12 1998

order_num 1017
date_shipped Wednesday July 13 1998
TO_CHAR 函数还可以格式化数字值。
有关内置 TO_CHAR 函数的更多信息,
请参阅
《GBase
8s SQL 指南:语法》。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 94 -


TO_DATE 函数
TO_DATE 函数接受字符数据类型的参数并将此值转换为 DATETIME 值。
TO_DATE 函数
根据您指定的日期格式化伪指令对字符串求值并返回 DATETIME 值。有关受支持的日期
格式化伪指令的列表,请参阅《GBase 8s GLS 用户指南》中 GL_DATETIME 环境变量的
描述。
还可以使用 TO_DATE 函数将 LVARCHAR 值转换为 DATETIME 值。
下列查询使用 TO_DATE 函数将字符串转换为指定格式的 DATETIME 值。
图: 查询
SELECT customer_num, call_descr
FROM cust_calls
WHERE call_dtime = TO_DATE("2008-07-07 10:24",
"%Y-%m-%d %H:%M");

图: 查询结果
customer_num 110

call_descr Order placed one month ago (6/7) not received.
可以使用 DATE 或 TO_DATE 函数来将字符串转换为 DATE 值。
TO_DATE 函数的一个优
点是它允许您为返回的值指定格式。(可以使用 TO_DATE函数(它总是返回 DATETIME
值)来将字符串转换为 DATE 值,原因是数据库服务器隐式处理 DATE 和 DATETIME
值之间的转换。)

Statement*stmt = conn->createStatement();
a.执行一般的 SQL 语句
stmt->executeUpdate("Create TABLE basket_tab (fruit VARCHAR2(30), quantity
NUMBER)");



stmt->executeUpdate("delete basket_tab");
b.重复利用 SQL 语句,参数化的 SQL 语句
//:1,:2 是参数占位符
stmt->setSQL("Insert INTO basket_tab VALUES(:1,:2)"); //第一个参数
stmt->setString(1,"Bananas");
//第二个参数
stmt->setInt(2,5);
stmt->executeUpdate();
c.执行查询:获取结果集(记录集)
ResultSet*rs = stmt->executeQuery("Select * FROM basket_tab"); while(rs->next())
{
string fruit =rs->getString(1);// get the first column as string int quantity
=rs->getInt(2);// get the second column as int
}
//关闭结果集 stmt->closeResultSet(rs);