Oracle SQL - считая до 3

Это легко, но я действительно не могу понять это.

Я пытаюсь получить эту простую таблицу:

NUMBER
1
2
3

Итак, я пытаюсь это:

select (1,2,3) as number from dual;

и я получаю

ORA-00907: пропущена правая скобка 00907. 00000 - "пропущена правая скобка"

Как я могу создать эту статическую таблицу?

РЕДАКТИРОВАТЬ: Извините, я упростил свою таблицу, но должен был быть более явным. Мои числа не 1, 2 и 3, они около 50 чисел где-то между 1 и 10000. Похоже, это не может быть сделано?

3 ответа

Этот "трюк" сделает это:

select n
from (select rownum n from dual
      connect by level <= 3);

Начиная с Oracle 10g, вы можете делать:

SELECT LEVEL "NUMBER"
FROM DUAL
CONNECT BY LEVEL <= 3

Очевидно, что это может быть легко изменено, чтобы генерировать больше чисел, чем просто 3, если это необходимо.

--- РЕДАКТИРОВАТЬ ---

Для статического списка чисел вы можете просто:

SELECT 1 FROM DUAL
UNION ALL
SELECT 2 FROM DUAL
UNION ALL
SELECT 3 FROM DUAL
-- etc...

Или, если вам нужно использовать его из более чем одного места, поместите данные во временную таблицу:

CREATE GLOBAL TEMPORARY TABLE TMP_TABLE (
    "NUMBER" INT PRIMARY KEY
);

INSERT INTO TMP_TABLE VALUES (1);
INSERT INTO TMP_TABLE VALUES (2);
INSERT INTO TMP_TABLE VALUES (3);

SELECT * FROM TMP_TABLE;

Я не уверен, что вы подразумеваете под "Как я могу создать эту статическую таблицу?" Когда я думаю о статических таблицах, я думаю о чем-то вроде:

SQL> create table t (n number);

Table created.

SQL> insert into t values (1);

1 row created.

SQL> insert into t values (5000);

1 row created.

SQL> -- ....
SQL> insert into t values (10000);

1 row created.

SQL> commit;

Commit complete.

SQL> select * from t;

         N
----------
         1
      5000
     10000

Чтобы использовать двойной:

SQL> select *
  2  from (select 1 as n from dual
  3      union all select 5000 from dual
  4      -- ...
  5      union all select 10000 from dual);

         N
----------
         1
      5000
     10000

Пожалуйста, не называйте колонку number, Ничего хорошего не получится от использования зарезервированного слова в качестве имени столбца.

Другие вопросы по тегам