如果参数是数字,我如何才能将雪花中的 javascript 函数设置为 return 一个值,如果参数不是数字,则如何设置另一个值?
How can I get a javascript function in snowflake to return one value if the argument is numeric or another value if the argument is not numeric?
我的公司正在从 Oracle 数据库解决方案过渡到雪花数据仓库。我正在将我们的用户定义的 oracle 函数转换为雪花用户定义的函数。如果传递的值为数字,我们在 oracle 中的一个函数将 return 为 1,如果传递的值为 non-numeric,则为 0。
更具体地说,我想在值列中包含数值时更新列 (x_value)。例如,如果我有一个标题为 creditscore 的字段,行中的值为 700、599、'no record',我需要使用数值更新字段 (xscore) 并将 non-numeric creditscore 保留为空xscore 字段。
我是 javascript 的新手(嗯,不完全是新手 -- 我今天一整天都在用它),但运气不好。这是基本功能:
CREATE OR REPLACE FUNCTION isnum(x variant)
RETURNS integer
LANGUAGE javascript
'
IF (isNan(x))
{
RETURN 1;
}
ELSE RETURN 0;
';
我也试过 typeof 但得到同样的错误,如下所示:
SQL Error [1003] [42000]: SQL compilation error:
syntax error line 4 at position 0 unexpected ''
IF (isNan(x))
{
RETURN 1;
}
ELSE RETURN 0;
''.
感谢您的协助!
如果是Javascript那么区分大小写。
if ( isNaN(x) ) {
return 1;
} else {
return 0;
}
或者您始终可以使用三元运算符:
return ( isNaN(x) ? 1 : 0 );
但是,我以前从未使用过 Snowflake,所以如果它需要以特定方式格式化 JS,我无法提供帮助(只是 vanilla JS 语法本身)。
您不需要为此使用用户定义的函数。您可以使用 Snowflake 的 TRY_TO_NUMBER 函数。
create or replace table TEST1 (s string);
insert into TEST1 select ('Not a number');
insert into TEST1 select ('750');
select try_to_number(s) from TEST_IS_NUMBER;
然后你可以从这个select插入。
我的公司正在从 Oracle 数据库解决方案过渡到雪花数据仓库。我正在将我们的用户定义的 oracle 函数转换为雪花用户定义的函数。如果传递的值为数字,我们在 oracle 中的一个函数将 return 为 1,如果传递的值为 non-numeric,则为 0。
更具体地说,我想在值列中包含数值时更新列 (x_value)。例如,如果我有一个标题为 creditscore 的字段,行中的值为 700、599、'no record',我需要使用数值更新字段 (xscore) 并将 non-numeric creditscore 保留为空xscore 字段。
我是 javascript 的新手(嗯,不完全是新手 -- 我今天一整天都在用它),但运气不好。这是基本功能:
CREATE OR REPLACE FUNCTION isnum(x variant)
RETURNS integer
LANGUAGE javascript
'
IF (isNan(x))
{
RETURN 1;
}
ELSE RETURN 0;
';
我也试过 typeof 但得到同样的错误,如下所示:
SQL Error [1003] [42000]: SQL compilation error:
syntax error line 4 at position 0 unexpected ''
IF (isNan(x))
{
RETURN 1;
}
ELSE RETURN 0;
''.
感谢您的协助!
如果是Javascript那么区分大小写。
if ( isNaN(x) ) {
return 1;
} else {
return 0;
}
或者您始终可以使用三元运算符:
return ( isNaN(x) ? 1 : 0 );
但是,我以前从未使用过 Snowflake,所以如果它需要以特定方式格式化 JS,我无法提供帮助(只是 vanilla JS 语法本身)。
您不需要为此使用用户定义的函数。您可以使用 Snowflake 的 TRY_TO_NUMBER 函数。
create or replace table TEST1 (s string);
insert into TEST1 select ('Not a number');
insert into TEST1 select ('750');
select try_to_number(s) from TEST_IS_NUMBER;
然后你可以从这个select插入。