Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > Базы данных: SQL > Oracle 11 vs Oracle 12 |
Автор: LMM 27.06.18, 09:20 |
Всем здравствуйте! Запрос простой, как шланг: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> select nkl100 from geoobject where to_number(substr(nkl100, 6, 3)) > 144 order by nkl100 Поле NKL100 - строки вида 'N-37-023', 'P-35-142' etc... (номенклатуры карты масштаба 1 : 100 000). На 11 версии всё ОК, получил список некорректных номенклатур. На 12 версии получил ORA-01722: неверное число. Ничего не понимаю! Посмотрел на SQL.RU и прочих - как и ожидалось, сплошные пляски с бубном. Вот такое: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> select nkl100, to_number(substr(nkl100, 6, 3)) from geoobject where reg_n < 1000 order by nkl100 на 12 версии работает ОК! И вот такое работает: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> select nkl100, to_number(substr(nkl100, 6, 3)) from geoobject where reg_n < 1000 order by to_number(substr(nkl100, 6, 3)) |
Автор: LMM 27.06.18, 10:19 |
Поплясал с бубном: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> select nkl100, to_number(substr(nkl100, 6, 3)) from geoobject where /*nkl100 is not null and*/ length(nkl100) = 8 and to_number(substr(nkl100, 6, 3)) > 144 и нашёл ошибку в данных! Данные внесены аж в 2004 году! Надо дома глянуть, что там для этого объекта. Мои извинения тем, кто таки потратил на ЭТО время. |