gpt4 book ai didi

javascript函数在雪花函数中给出NULL

转载 作者:行者123 更新时间:2023-12-01 01:01:57 24 4
gpt4 key购买 nike

我使用 JavaScript 在雪花中创建了一个函数来计算字符串距离,但是该函数给了我 NULL 值。我无法调试该功能。

代码:

CREATE OR REPLACE FUNCTION cat_map_trial4(a string,b string)
RETURNS STRING
LANGUAGE JAVASCRIPT
AS
$$
function levenshteinDistance(s1, s2) {
if (!s1.length) return toString(s2.length);
if (!s2.length) return toString(s1.length);

return toString(Math.min(
levenshteinDistance(s1.substr(1), s2) + 1,
levenshteinDistance(s2.substr(1), s1) + 1,
levenshteinDistance(s1.substr(1), s2.substr(1)) + (s1[0] !== s2[0] ? 1 : 0)
) + 1);
}
$$


select cat_map_trial4('stackoverflow', 'stack') as dist;

输出

dist
NULL

Javascript 出了什么问题?任何帮助,将不胜感激。谢谢。

最佳答案

您的代码中存在一些问题

  • 你定义了一个函数,但不使用它,你需要在最后添加一个调用
  • 你错误地使用了toString,如果你坚持使用字符串,请使用String(value)
  • 如果您使用字符串,则无法使用“+”来添加它们的数值...
  • 最后你有一个不必要的+1
  • 您使用的该算法的实现速度非常慢,您应该使用更快的算法,请阅读 various ways to compute it

这是一个更正后的版本(仍然很慢,但有效):

CREATE OR REPLACE FUNCTION cat_map_trial4(a string,b string)
RETURNS STRING
LANGUAGE JAVASCRIPT
AS
$$
function levenshteinDistance(s1, s2) {
if (!s1.length) return s2.length;
if (!s2.length) return s1.length;
return Math.min(
levenshteinDistance(s1.substr(1), s2) + 1,
levenshteinDistance(s2.substr(1), s1) + 1,
levenshteinDistance(s1.substr(1), s2.substr(1)) + (s1[0] !== s2[0] ? 1 : 0)
);
}
return levenshteinDistance(A, B);
$$;

但是您的代码最大的问题是它完全没有必要,因为 Snowflake 非常出色,它提供了一个内置的、快速的 EDITDISTANCE功能:)

关于javascript函数在雪花函数中给出NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55987646/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com