Calcite SQL调用MD5函数报错:无匹配函数签名问题求助
解决Calcite中MD5函数签名不匹配问题
问题原因
Calcite内置的MD5函数仅接受VARBINARY类型的参数,你传入的是字符串(CHAR/VARCHAR类型),因此触发函数签名不匹配错误:No match found for function signature MD5(<CHARACTER>)。
解决方法
将字符串列转换为VARBINARY类型后再传入MD5函数即可,使用CAST函数完成类型转换:
SELECT MD5(CAST(name AS VARBINARY)) FROM emps;
验证示例
针对你的emps表,执行上述查询后会返回每个name列的MD5哈希值,示例结果如下:
+----------------------------------+ | EXPR$0 | +----------------------------------+ | c356d3b51a3a746dd02688770e0ca840 | | 550a141f12de6341fba65b0ad0433500 | | 527bd5b5d689e2c32ae974c6229ff785 | | 0a2f8fe483c7c045436d1d75a3564351 | | 865c0c0b4ab0e063e5caa3387c1a8741 | +----------------------------------+
补充说明
如果需要直接对字符串调用MD5而无需手动转换,也可以自定义一个接受字符串参数的MD5函数并注册到Calcite,但使用内置函数配合类型转换是最简便的方案。
内容的提问来源于stack exchange,提问作者Adhish
相关产品推荐
相关产品推荐

