Как я могу получить функцию javascript в снежинке, которая возвращает одно значение, если аргумент является цифрой c, или другое значение, если аргумент не является цифрой c? - PullRequest
0 голосов
/ 11 февраля 2020

Моя компания переходит с oracle решения для базы данных на хранилище данных типа «снежинка». Я конвертирую наши пользовательские oracle функции в пользовательские функции типа «снежинка». Одна функция, которую мы имеем в oracle, вернет 1, если переданное значение равно цифре c, и 0, если переданное значение не равно нумерации c.

Чтобы быть более точным c, я хочу обновить столбец (x_value), когда в столбце значений есть значение цифра c. Например, если у меня есть поле с названием creditscore со значениями 700, 599, «без записи» в строках, мне нужно обновить поле (xscore) со значениями числовых c и оставить нечисловое c creditscore нуль в поле xscore.

Я новичок в javascript (ну, не совсем новый - я работал с ним весь день сегодня), и мне не повезло. Вот основная функция c:

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;

''.

Спасибо за вашу помощь!

Ответы [ 2 ]

2 голосов
/ 11 февраля 2020

Вам не нужна пользовательская функция для этого. Вы можете использовать функцию 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;

Затем вы можете вставить из этого выбора.

2 голосов
/ 11 февраля 2020

Если это Javascript, тогда он чувствителен к регистру.

if ( isNaN(x) ) {
  return 1;
} else {
  return 0;
}

Или вы всегда можете использовать троичный оператор:

return ( isNaN(x) ? 1 : 0 );

Однако я никогда раньше не использовал Snowflake так что, если он требует, чтобы JS был отформатирован определенным образом c, то я не могу с этим помочь (только сам синтаксис vanilla JS).

...