Вы нигде не указали, что ваш запрос невалиден! Неудивительно, что вы получаете недокументированный результат на запрос невалидный с точки зрения той же документации.
Как меня поражает все-таки наглая попытка увильнут и как-то откреститься от своих же слов и действий. Внимательно смотрите что я процитировал в исходном комменте.
Пройдемся спокойно по списочку:
1. Вы пишете кривой недокументированный запрос
2. Снабжаете его неверной интерпретацией
3. Получаете кривые данные кривого запроса
4. Пытаетесь сделать из этих данных какой-то совершено не взаимосвязанный вывод.
5. В выводе косвенно заявляете о том, что все написанное выше это ошибки разработчиков mysql, но не уточняете, что как минимум этот ваш запрос — это именно ваша ошибка.
Я несколько раз пытался намекнуть, а после уже прямым текстом сказал, что запрос вы пишете невалидный. Багом является то, что не выдает ошибки при запросе об отстутствии агрегата. Не пытайтесь анализировать на невалидных запросах, что вы постоянно пытаетесь делать как и в случаете с enum.
Строго говоря, пример неудачный, т.к. в oracle char не может быть «пустой строкой». Просто посмотрите его длину. Отличие действительно есть в pl/sql, но единственное и категорически не связано с char'aми:
create or replace function f_is_null(s varchar2) return varchar2 is
type tt is table of number index by varchar2(10);
vt tt;
e exception;
pragma exception_init(e,-6502);
begin
vt(s):=1;
return case
when s is null then 'empty'
else 'not empty'
end;
exception
when e then return 'null';
end;
/
declare
pkey1 varchar2(10):='';
pkey2 varchar2(10):=null;
pkey3 varchar2(10):='filled';
begin
dbms_output.put_line('pkey1-'||f_is_null(pkey1));
dbms_output.put_line('pkey2-'||f_is_null(pkey2));
dbms_output.put_line('pkey3-'||f_is_null(pkey3));
end;
/
(select level a from dual connect by level <= 5) q1,
(select level a from dual connect by level <= 5) q2,
(select level a from dual connect by level <= 5) q3,
(select level a from dual connect by level <= 5) q4,
(select level a from dual connect by level <= 5) q5,
(select level a from dual connect by level <= 5) q6,
(select level a from dual connect by level <= 5) q7,
(select level a from dual connect by level <= 5) q8,
(select level a from dual connect by level <= 5) q9,
(select level a from dual connect by level <= 5) q10,
(select level a from dual connect by level <= 5) q11,
(select level a from dual connect by level <= 5) q12,
(select level a from dual connect by level <= 5) q13,
(select level a from dual connect by level <= 5) q14,
(select level a from dual connect by level <= 5) q15,
(select level a from dual connect by level <= 5) q16,
(select level a from dual connect by level <= 5) q17,
(select level a from dual connect by level <= 5) q18,
(select level a from dual connect by level <= 5) q19,
(select level a from dual connect by level <= 5) q20
сократить до:
with g as (select level a from dual connect by level <= 5)
select *
from g q1, g q2, g q3, g q4, g q5, g q6, g q7, g q8, g q9, g q10
,g q11, g q12, g q13, g q14, g q15, g q16, g q17, g q18, g q19, g q20
Комиссия за перевод внутри банка у сбера только если карты в разных банках
ага, хорошее уточнение :) но хрен с ним, что снимают при переводе на чужие счета в разных региональных подразделениях/филиалах(мне теперь совершенно безразлично как они де-юре называются), меня больше раздражает, что даже между своими счетами! Именно по этой причине я уже не их клиент.
ну можно джойном с пивот таблицей. А отличие в другом — то что я показал можно легко выполнять в инлайн вью, т.е. прямо в запросе. Соответственно все можно решить одним запросом с однократным чтением таблицы
Пройдемся спокойно по списочку:
1. Вы пишете кривой недокументированный запрос
2. Снабжаете его неверной интерпретацией
3. Получаете кривые данные кривого запроса
4. Пытаетесь сделать из этих данных какой-то совершено не взаимосвязанный вывод.
5. В выводе косвенно заявляете о том, что все написанное выше это ошибки разработчиков mysql, но не уточняете, что как минимум этот ваш запрос — это именно ваша ошибка.
Я несколько раз пытался намекнуть, а после уже прямым текстом сказал, что запрос вы пишете невалидный. Багом является то, что не выдает ошибки при запросе об отстутствии агрегата. Не пытайтесь анализировать на невалидных запросах, что вы постоянно пытаетесь делать как и в случаете с enum.
сократить до:
И в оракле тоже есть