DECRYPT_CHAR 函数

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 大对象。

如果以加密了的字符串参数调用 DECRYPT_CHAR 成功,则它返回包含 encrypted_data 参数的明文版本的字符串。下列示例从 engineersssid 列返回包含解密了的值的字符串,该行的 empno 值为 287:
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 语句