Разница между функциями length() и 60-length() в Oracle

#sql #oracle

Вопрос:

Я наткнулся на функцию Oracle 60-length() и обнаружил, что она отличается от обычной length() функции, используемой в Oracle.

Если я побегу,

 Select length(name) from table_name where id=10;
 

он повторяется 16 раз.

Но если я побегу,

 Select 60-length(name) from table_name where id=10;
 

он возвращает 44.

Интересно, в чем разница между этими двумя функциями. Кто-нибудь может, пожалуйста, объяснить? Кроме того, я обнаружил, что 30-length(name) возвращает 31 и 90-length(name) возвращает 74 в результате одного и того же запроса. Меня смущают разные результаты. Я уже просмотрел документы Oracle, но не получил четкого представления об этих различиях.

Комментарии:

1. 60 — 16 — это 44? 🙂

2. Вам нужно будет показать более подробную информацию обо всех различных случаях, которые вы обнаружили. Но я подозреваю, что все это будет объяснено арифметикой.

3. верно, я понял.. Спасибо..

Ответ №1:

60-length() это не функция. Это выражение, которое просто вычитает длину строки из числа 60.

Если длина равна 20, то 60 - length = 60 - 20 = 40 .

Ответ №2:

Интересно, в чем разница между этими двумя функциями.

  • length(name) находит длину строки в name столбце.
  • 60-length(name) находит длину строки в name столбце, а затем вычитает эту длину из 60.

90-length(name) возвращение 74

Если длина имени составляет 16 символов, то 90 - 16 = 74 .

30-length(name) возвращает 31

Это сбивает с толку как 30 - 16 = 14 и нет 31 . Вы уверены, что это не 47 так ? С. 47 - 16 = 31

Комментарии:

1. Спасибо за ваше объяснение,,, теперь я понял… Это расчетливо..