Знак плюс в предложении выбора SQL - PullRequest
0 голосов
/ 29 мая 2019

Я работаю над старым SQL, написанным для Oracle.Есть часть предложения select, которую я не понимаю, даже после поиска в Google и проверки вопросов, связанных со знаком +, с ключевыми словами Oracle и SQL.

Я проверил ответ на похожий вопрос дляпредложение where здесь и я нашел документы Oracle для объединения, но это не имеет смысла для предложения select.

Учитывая SQL ниже, какова цель плюсаsign.

select '01,'|| 
lpad( 
   (select nvl(count(*), 0) from table1)
   +
   (select nvl(count(*), 0) from table2)
   +
   (select nvl(count(*), 0) from table3)
,9,'0')
from DUAL

Пример вывода

01,000011111

Из примера вывода sql кажется, что он предназначен для объединения результата, но я хочу быть уверен.

Ответы [ 2 ]

2 голосов
/ 29 мая 2019

+ не для объединения строк. Это для дополнения. Кроме того, count() не возвращает значения NULL, поэтому nvl() не требуется.

Это должно быть эквивалентно:

select ('01,' || 
        lpad( ((select count(*) from table1) +
               (select count(*) from table2) +
               (select count(*) from table3)
              ), 9, '0'
            )
        )
from DUAL
1 голос
/ 29 мая 2019

Ровшен, я согласен с Гордоном. Код соединяет '01 'с отформатированной суммой отсчетов из трех таблиц. LPAD равен нулю, заполняя суммированное числовое значение до 9 цифр. "||" является символом конкатенации в Oracle, хотя есть и функция concat. Это редко используется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...