Как заменить строковый столбец числом 0, если значения в этом столбце равны нулю - PullRequest
1 голос
/ 09 апреля 2020

Надеюсь, что это правильное место, чтобы задать вопрос, связанный с базой данных снежинок. Я хотел бы знать, как заменить строковое значение столбца на 0, если оно равно нулю. до сих пор я пробовал функцию nvl, но это не сработало.

CREATE TABLE EMP(ENAME VARCHAR(10));
INSERT INTO EMP VALUES('JACK');
INSERT INTO EMP VALUES(null);

SELECT NVL(ENAME,0) FROM EMP1;

Ошибка: Numeri c значение 'JACK' не распознано

Любая помощь приветствуется.

Спасибо, Наваз

1 Ответ

1 голос
/ 09 апреля 2020

SQL строго типизировано. Тип вывода NVL выводится как NUMBER, поэтому фактический запрос выглядит примерно так:

SELECT NVL(ENAME::NUMBER, 0) FROM EMP1;

. Вы должны решить, каким типом должен быть ваш вывод. Если вы хотите строки, то вам нужно будет передать NVL строку, например

SELECT NVL(ENAME, '0') FROM EMP1;

Если вы хотите целые числа, вам нужно будет безопасно преобразовать строки в целые числа. Например, если вы хотите, чтобы нецелые числа стали NULL, а затем 0, тогда вы можете использовать

SELECT NVL(TRY_TO_INTEGER(ENAME), 0) FROM EMP1;
...