В базе данных Oracle, каково различие между ROWNUM и ROW_NUMBER?

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

21
задан mahi_0707 11 July 2015 в 13:29
поделиться

3 ответа

ROWNUM является "псевдостолбцом", который присваивает номер каждой строке, возвращенной запросом:

SQL> select rownum, ename, deptno
  2  from emp;

    ROWNUM ENAME          DEPTNO
---------- ---------- ----------
         1 SMITH              99
         2 ALLEN              30
         3 WARD               30
         4 JONES              20
         5 MARTIN             30
         6 BLAKE              30
         7 CLARK              10
         8 SCOTT              20
         9 KING               10
        10 TURNER             30
        11 FORD               20
        12 MILLER             10

ROW_NUMBER является аналитической функцией, которая присваивает номер каждой строке согласно ее упорядочиванию в группе строк:

SQL> select ename, deptno, row_number() over (partition by deptno order by ename) rn
  2  from emp;

ENAME          DEPTNO         RN
---------- ---------- ----------
CLARK              10          1
KING               10          2
MILLER             10          3
FORD               20          1
JONES              20          2
SCOTT              20          3
ALLEN              30          1
BLAKE              30          2
MARTIN             30          3
TURNER             30          4
WARD               30          5
SMITH              99          1
38
ответ дан 29 November 2019 в 20:48
поделиться

От небольшого чтения ROWNUM является значением, автоматически присвоенным Oracle набору строк (до оцениваемого ORDER BY, не делайте никогда ORDER BY ROWNUM или используйте WHERE ROWNUM < 10 с ORDER BY).

ROW_NUMBER () , кажется, функция для присвоения номеров строк к набору результатов, возвращенному подзапросом или разделом.

1
ответ дан 29 November 2019 в 20:48
поделиться

rownum является псевдостолбцом, который может быть добавлен к любому запросу Select, для нумерации возвращенных строк (запускающийся с 1). Им заказывают согласно тому, когда они были определены как являющийся частью набора конечного результата. ( #ref)

row_number является функцией analytic, которая может использоваться для нумерации строк, возвращенных запросом в порядке, переданном под мандат row_number () функция.

-1
ответ дан 29 November 2019 в 20:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: