首页 > 数据库 > > Gauss 100 数据库函数介绍之其他函数Part4
不建议在安全场景中使用该函数。
语法:
SHA(str_expr)
功能:为传入的参数按SHA算法生成一个定长的HASH值,并将该HASH值按字符串形式返回(40字节)。函数SHA1的别名,功能与SHA1相同。
说明:
str_expr为字符串表达式,长度超过8000会报错。
传入的值为NULL时,该函数也返回NULL。
示例:
返回abc的HASH值。
SELECT SHA('abc');
SHA('ABC')
--------------------
A9993E364706816ABA3E25717850C26C9CD0D89D
1 rows fetched.
不建议在安全场景中使用该函数。
语法:
SHA1(str_expr)
功能:为传入的参数按SHA1算法生成一个定长的HASH值,并将该HASH值按字符串形式返回(40字节)。
说明:
str_expr为字符串表达式,长度超过8000会报错。
传入的值为NULL时,该函数也返回NULL。
示例:
返回abc的HASH值。
SELECT SHA1('abc');
SHA1('ABC')
--------------------
A9993E364706816ABA3E25717850C26C9CD0D89D
1 rows fetched.语法:
SOUNDEX(expr)
功能:返回字符串参数的语音表示形式。
示例:
返回姓氏发音与SMYTHE相同的员工姓名。
--删除表employee。 DROP TABLE IF EXISTS employee;
--创建表employee。 CREATE TABLE employee (last_name varchar(20) ,first_name varchar(20));
--加入数据。
INSERT INTO employee(last_name,first_name) values('Smith','Lindsey');
INSERT INTO employee(last_name,first_name) values('Smith','William');
INSERT INTO employee(last_name,first_name) values('Brown','Bill');--姓氏发音与SMYTHE相同的员工姓名。
SELECT last_name, first_name
FROM employee
WHERE SOUNDEX(last_name)
= SOUNDEX('SMYTHE')
ORDER BY last_name, first_name;
LAST_NAME FIRST_NAME
-------------------- --------------------
Smith Lindsey
Smith William
2 rows fetched.语法:
SYS_CONTEXT(namespace_expr, parameter_expr [, length])
功能:返回指定的namespace关联的上下文中的配置参数(parameter)值。
在当前版本中支持的namespace和parameter如下:
SID:当前连接对应的会话ID。与CONNECTION_ID()类似,如果一个连接断开后其对应的会话被后面新建的一个连接所复用,则对应的会话ID也会被复用。
TERMINAL:当前session的客户端机器的HOST名。
说明:
namespace_expr和parameter_expr必须是计算结果可转换为字符串的表达式。
返回值类型为字符串,默认长度为256字节。超长部分被截断。
第三参数length表示的是该函数返回值的字符串最大长度,length必须是一个可以隐式转换为INTEGER类型的表达式。length的值的有效长度为1~4000,若用户指定的length不在此范围内,则仍然取默认值256字节。
示例1:
返回当前会话ID。
SELECT SYS_CONTEXT('USERENV', 'SID') FROM DUAL;
SYS_CONTEXT('USERENV', 'SID')
----------------------------------------------------------------
49
1 rows fetched.示例2:
返回当前session的客户端机器的HOST名。
SELECT SYS_CONTEXT('USERENV', 'TERMINAL') FROM DUAL;
SYS_CONTEXT('USERENV', 'TERMINAL')
----------------------------------------------------------------
127.0.0.1
1 rows fetched.语法:
SYS_GUID()
功能:生成一个16字节的全局唯一标识(global unique identifier),返回值类型是BINARY。
说明:若要用字符串类型字段接收SYS_GUID()的结果,由于二进制字节转换为字符串是按16进制表示,因此需要将字段定义为32字节及以上。
示例:
创建一个表格,以全局唯一标识作为主键。
--删除表employee。 DROP TABLE IF EXISTS employee;
--创建表employee。 CREATE TABLE employee(staff_id raw(16) default sys_guid() primary key, first_name VARCHAR(32));
--加入数据。 INSERT INTO employee(first_name) values ( 'GREECE '); INSERT INTO employee(first_name) values ( 'ALAN'); INSERT INTO employee(first_name) values ( 'FRANK '); --提交事务。 COMMIT;
--查询表格。 SELECT * FROM employee; STAFF_ID FIRST_NAME ---------------------------------------------------------------- -------------------------------- B5E49C6E665846A9BF7F00794748AA50 GREECE 2698BC648AC247968DC987555DEAB179 ALAN 46540BE9789E4BF49D0EA87705A444CC FRANK 3 rows fetched.
语法:
UPDATING(col_name)
功能:在update的触发器中使用,用于判断该列上是否进行过UPDATE操作。
示例:
判断触发器的列是否发生变化更新,如果发生该列发生变化数据更新,则抛出异常。
--删除已存在的同名表training。 DROP TABLE IF EXISTS training;
--创建同名表training。 CREATE TABLE training(staff_id INT NOT NULL,course_name CHAR(50),course_start_date DATETIME, course_end_date DATETIME,exam_date DATETIME,score INT);
--创建触发器trigger_training。
CREATE OR REPLACE TRIGGER trigger_training BEFORE UPDATE ON training FOR EACH ROW AS
wrong_error exception;
errno NUMBER;
errmsg VARCHAR2(30);
BEGIN
IF UPDATING('course_name') THEN
errno := '-20030';
errmsg := 'cannot update this column';
RAISE wrong_error;
END IF;
EXCEPTION
WHEN wrong_error THEN
raise_application_error(errno,errmsg);
END;
/语法:
USERENV(parameter_expr)
功能:是SYS_CONTEXT()的向下兼容版本,返回的是默认命名空间"USERENV"的配置参数的值。
在当前版本中支持的parameter如下:
SID:当前连接对应的会话ID。与CONNECTION_ID()类似,如果一个连接断开后其对应的会话被后面新建的一个连接所复用,则对应的会话ID也会被复用。
TERMINAL:当前session的客户端机器的HOST名。
说明:parameter_expr必须是计算结果可转换为字符串的表达式。返回值类型为字符串,最大长度为256字节,超长部分被截断。
示例:
返回当前回话ID。
SELECT USERENV('SID') FROM DUAL;
USERENV('SID')
----------------------------------------------------------------
48
1 rows fetched.语法:
VERSION()
功能:获取当前的版本信息。
示例:
获取当前的版本信息。
SELECT VERSION(); VERSION() -------------------------------------------------- Zenith-Gauss100-OLTP-V300R001C00B300 Release 1 rows fetched.
语法:
VSIZE(expr)
功能:返回指定表达式的值在Gauss100 内部存储时所占的字节数。
说明:
当表达式是NULL时,该函数也返回一个NULL。
该函数不支持传入的参数表达式的值类型是CLOB类型。
示例:
返回字符Alice在Gauss100 内部存储时所占的字节数。
SELECT VSIZE('Alice') FROM DUAL;
VSIZE('ALICE')
--------------------
5
1 rows fetched.来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3147726/ ,如需转载,请注明出处,否则将追究法律责任。