ROWNUM усеченный выходной набор записей - PullRequest
0 голосов
/ 06 июля 2018

Этот запрос

select id from TABLE where id=1234 or id like '234%'

возвращает 11 строк, как и ожидалось. Но когда я попробую это

select rownum as rnum, id from TABLE where id=1234 or id like '234%'

или даже это

select * from (
     select id from TABLE where id=1234 or id like '234%'
) where rownum < 22

У меня только 10 строк (id = 1234 отсутствует в выходном наборе записей). Почему это?

DDL для таблицы TABLE

  CREATE TABLE "TABLE" 
   (    "ID" NUMBER(28,0), 
    "SPOT_LCK" NUMBER(28,0), 
    "STATUS" NUMBER(*,0), 
    "CARRIER_YN" CHAR(1 BYTE), 
    ...
    "DRIVER" NUMBER(38,0) DEFAULT 0
   );

Ограничения для таблицы TABLE

ALTER TABLE "SCHEMA"."TABLE" ADD CONSTRAINT "PK_TBL" PRIMARY KEY ("ID")

Oracle 12c Release 12.1.0.2.0 - 64 бита

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

На данный момент решения не найдено: oracle говорит, что требуется последний патч, поставщик приложений говорит, что он его не поддерживает. так что мы уходим как есть.

0 голосов
/ 06 июля 2018

Дважды проверьте свои результаты, вы, должно быть, ошиблись. Минимальный пример:

create table testrn ( id number primary key, c1 number );
insert into testrn values (1234, 1);
insert into testrn values (2341, 2);
insert into testrn values (2342, 3);
insert into testrn values (2343, 4);
insert into testrn values (2344, 5);
insert into testrn values (2345, 6);
insert into testrn values (2346, 7);
insert into testrn values (2347, 8);
insert into testrn values (2348, 9);
insert into testrn values (2349, 10);
insert into testrn values (23410, 11);
commit;
select id, rownum from testrn where id=1234 or id like '234%';

Возвращает 11 строк, как и ожидалось. И я предполагаю, что вы имели в виду 1234 отсутствует, поскольку 123 не используется в SQL?

...