Выберите без ИЗ пункта в Oracle

О, и реверс массив

v = 1:10;
v_reverse = v(length(v):-1:1);
44
задан Ben 22 June 2014 в 12:02
поделиться

6 ответов

Нет, в Oracle нет SELECT без FROM .

Использование дуального ] является хорошей практикой.

dual - это таблица в памяти. Если вы не выберете в нем DUMMY , он будет использовать специальный путь доступа ( FAST DUAL ), который не требует ввода-вывода .

Однажды время, dual имел две записи (отсюда и название) и предназначался для использования в качестве фиктивного набора записей для дублирования записей, с которыми соединяются.

Теперь он имеет только одну запись, но вы все равно можете сгенерировать произвольное количество строк с ним:

SELECT  level
FROM    dual
CONNECT BY
        level <= 100

MySQL также поддерживает dual (а также синтаксис fromless).

76
ответ дан 26 November 2019 в 21:58
поделиться

рекомендуется использовать двойной table

Да, двойной стол обычно используется именно для этой цели. В Oracle это довольно стандартно, когда у вас нет таблицы для выбора.

4
ответ дан 26 November 2019 в 21:58
поделиться

не забывайте, что в большинстве случаев вам не нужно использовать SELECT.

Вместо:

SELECT sysdate INTO l_date FROM dual;
SELECT CASE WHEN i = j THEN 0 ELSE 1 END INTO l_foo FROM dual;
...

вы можете использовать

l_date := sysdate;
l_foo  := CASE WHEN i = j THEN 0 ELSE 1 END;
...
8
ответ дан 26 November 2019 в 21:58
поделиться

Думаю, вам нужно использовать двойной. он используется, когда вам нужно запустить SQL, у которого нет имени таблицы. Я не могу сказать, что использую его иначе, как в сценариях SQL, чтобы вывести дату запуска или что-то подобное.

2
ответ дан 26 November 2019 в 21:58
поделиться

Да, двойная таблица - это обычный способ сделать это в Oracle. Фактически, он был введен именно для этого.

Основным преимуществом DUAL является то, что оптимизатор в Oracle знает, что он особенный, поэтому запросы с его использованием могут быть быстрее, чем если бы вы использовали однострочную таблицу, которую вы создали сами. В остальном в этом нет ничего особенного.

2
ответ дан 26 November 2019 в 21:58
поделиться

Фактически, SQL Реализация сервера нестандартная. Стандарт SQL-92 (раздел 7.9) требует наличия предложения FROM в операторе SELECT. DUAL - это способ Oracle предоставить таблицу для выбора для получения скалярной строки.

2
ответ дан 26 November 2019 в 21:58
поделиться
Другие вопросы по тегам:

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