DECRYPT_CHAR 函数接受 encrypted_data 字符串作为它的第一个参数,该字符串可有任何字符类型(CHAR、LVARCHAR、NCHAR、NVARCHAR 或 VARCHAR)。您必须指定 password 作为它的第二个参数,除非 SET ENCRYPTION 语句已为此会话指定了同一 session password,通过其加密了第一个参数。
DECRYPT_CHAR 函数还接受类型 BLOB 或 CLOB 的 encrypted_data 大对象作为它的第一个参数。您必须指定一口令作为它的第二个参数,除非 SET ENCRYPTION 语句已为此会话指定了同一 password 作为缺省值,通过其加密了第一个参数。如果调用 DECRYPT_CHAR 成功,则它返回包含 encrypted_data 的明文版本的 CLOB 大对象。
SELECT DECRYPT_CHAR (ssid) FROM engineers WHERE empno = 287;
如果 DECRYPT_CHAR 的第一个参数不是加密的值,或如果第二个参数(或由 SET ENCRYPTION 指定的缺省的 password)不是当加密第一个参数时使用的 password,则 GBase 8s 发出错误,且 DECRYPT_CHAR 调用失败。(请参阅 GETHINT 函数 的描述,来了解当您不能记住用于加密的 password 时可能采取的行动。)
请不要使用 DECRYPT_CHAR(或任何其他解密函数)来在加密的列上创建函数索引。这会将解密的值作为明文数据存储在数据库中,失去了加密的作用。
要获取更多关于在 GBase 8s 数据库的列值中使用数据加密的信息,请参阅 加密和解密函数 和 SET ENCRYPTION PASSWORD 语句。