Возвращаемые значения функции Oracle SQL TO_CHAR

Я не понимаю, почему эти два результата кода идентичны? Я думал, что если у меня есть кавычки, он просто объединяет строки. Почему не первый 300.5100? Я знаю, что второй - 400,5 в любом случае. Спасибо

Select to_char('300.5' + '100') From Dual;

Select to_char(300.5 + 100) From Dual;

person Sami    schedule 13.12.2017    source источник


Ответы (2)


Чтобы объединить строки в SQL, вы должны использовать ||. + предназначен только для добавления чисел. Если бы вы не прошли '300.5' + '100', вы бы просто получили сообщение об ошибке, например. следующий неверный SQL:

select '300.5' + '100'
from dual;

Но поскольку to_char() ожидает число в качестве входного параметра, Oracle неявно преобразует эти строки в числа, а затем добавляет их, как и во втором операторе.

person a_horse_with_no_name    schedule 13.12.2017

конкатенация

'xxx' || 'yyy'

ваш пример позволяет преобразовывать литералы в числовые, а затем обрабатывать их как обычные числа.

person Randy    schedule 13.12.2017