Oracle - CAST (row_number) запрос - PullRequest
0 голосов
/ 27 апреля 2020
SELECT NOABSEN,TANGGAL,JAM,
        'Jam' + CAST(ROW_NUMBER() OVER (PARTITION BY NOABSEN ORDER BY NOABSEN desc) as VARCHAR(20)) 
as ColumnsSequence 
From HRD_ABS_FINGER_DIVISI;

при запуске команды появляется ошибка, подобная этой:

ORA-01722: invalid number
01722. 00000 -  "invalid number"
*Cause:    The specified number was invalid.
*Action:   Specify a valid number.

1 Ответ

0 голосов
/ 27 апреля 2020

Здесь:

 'Jam' + CAST(ROW_NUMBER() OVER(..) AS VARHCAR(20))

В отличие от других баз данных (а именно, SQL Сервер), оператор добавления в Oracle действительно означает, что: сложение. Таким образом, поскольку вы на самом деле пытаетесь добавить две строки, Oracle пытается преобразовать их в числа - что не удается для буквальной строки 'Jam'.

Скорее всего, вам нужна скорее конкатенация строк (||) чем дополнение (+):

SELECT 
    NOABSEN,
    TANGGAL,
    JAM, 
    'Jam' || CAST(ROW_NUMBER() OVER (PARTITION BY NOABSEN ORDER BY NOABSEN desc) as VARCHAR(20)) as ColumnsSequence 
From HRD_ABS_FINGER_DIVISI;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...