#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. Спасибо за ваше объяснение,,, теперь я понял… Это расчетливо..