在 DB2 中为 table 生成散列值时出错
Error in generating a hashed value for a table in DB2
我使用以下语句生成 table 的散列值。
select ACTNO,HASH_SHA1(concat(ACTNO,ACTKWD,ACTDESC)) from ACT order by ACTNO
其中 ACTNO(主键)- SMALLINT,ACTKWD - CHAR,ACTDESC - VARCHAR
但是当我尝试执行此语句时出现错误。
Error:ibm_db_dbi::ProgrammingError: SQLNumResultCols failed: [IBM][CLI Driver][DB2/NT64] SQL0440N No authorized routine named "CONCAT" of type "FUNCTION" having compatible arguments was found. SQLSTATE=42884\r SQLCODE=-440
谁能帮我解决这个错误
当前版本的 Db2-LUW 提供了一个名为 HASH 的函数。
要使用 SHA1 算法,请为算法参数指定参数 1。你应该考虑更强的算法。
CONCAT() 函数只接受两个参数,但您给它三个,所以 Db2 会抛出异常(没有这样的函数)。在将非字符列转换为 varchar.
后,使用连接运算符 ||
如果您的 ACTKWD 和 ACTDESC 列允许 NULL,请使用 COALESCE()。
Db2-LUW 示例:
select actno, hash(varchar(actno)||coalesce(actkwd,'')||coalesce(actdesc,''),1) from act
我使用以下语句生成 table 的散列值。
select ACTNO,HASH_SHA1(concat(ACTNO,ACTKWD,ACTDESC)) from ACT order by ACTNO
其中 ACTNO(主键)- SMALLINT,ACTKWD - CHAR,ACTDESC - VARCHAR
但是当我尝试执行此语句时出现错误。
Error:ibm_db_dbi::ProgrammingError: SQLNumResultCols failed: [IBM][CLI Driver][DB2/NT64] SQL0440N No authorized routine named "CONCAT" of type "FUNCTION" having compatible arguments was found. SQLSTATE=42884\r SQLCODE=-440
谁能帮我解决这个错误
当前版本的 Db2-LUW 提供了一个名为 HASH 的函数。 要使用 SHA1 算法,请为算法参数指定参数 1。你应该考虑更强的算法。
CONCAT() 函数只接受两个参数,但您给它三个,所以 Db2 会抛出异常(没有这样的函数)。在将非字符列转换为 varchar.
后,使用连接运算符||
如果您的 ACTKWD 和 ACTDESC 列允许 NULL,请使用 COALESCE()。
Db2-LUW 示例:
select actno, hash(varchar(actno)||coalesce(actkwd,'')||coalesce(actdesc,''),1) from act