- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
Чудеса от Oracle.
--------- работает:
select to_number(null) from dual union all
select to_char(null) from dual
------------- меняем строчки местами - не работает
select to_char(null) from dual union all
select to_number(null) from dual
3.14159265 02.11.2012 18:06 # +2
nixel 02.11.2012 19:18 # 0
3.14159265 02.11.2012 21:28 # 0
dim1r 03.11.2012 13:09 # +1
а вот char --> number - не всегда удается ('xyz' --> ??? )
3.14159265 03.11.2012 17:27 # 0
Результат обычно преобразуется к тому что уже было перед union.
В рабочем варианте первый операнд - number вот к нему по логике и должно конвертироваться.
dim1r 03.11.2012 17:30 # 0
Может оракл приведение типов начинает с последнего sql в union?
3.14159265 03.11.2012 17:46 # +1
У меня как и предполагалось отваливается именно второе. С таким посланием.
dim1r 03.11.2012 17:51 # +3
select to_char(null) from dual union all
select to_number(null) from dual union all
select to_char(null) from dual
и такое
select to_number(null) from dual union all
select to_number(null) from dual union all
select to_char(null) from dual
не работает только когда to_number в конце стоит
3.14159265 03.11.2012 18:54 # +5
LispGovno 04.11.2012 01:23 # −2
Gad Petrovich 08.11.2012 10:17 # +1
3.14159265 03.11.2012 17:52 # 0
eth0 02.11.2012 20:50 # +1
3.14159265 02.11.2012 21:24 # 0
Вот например брать и неявно использовать их для сортировки - надо найти тот запрос и положить отдельным постом.
Нигде ведь в стандартах такого не написано. Просто побочный эффект.
То же, ясное дело, касается также distinct и group by.
slbsomeone 28.04.2013 09:07 # 0
У Oracle же в доке яснее некуда "в запросах использующих set операторы, Oracle не выполняет неявных преобразование между типами данных".
А SELECT to_lob(NULL) FROM dual считает что NULL имеет тип CHAR (в одной из версий).
Ну и что?
Это неправильное использование to_lob (она может быть применена только к LONG и LONG RAW столбцам).