Получение длины строки в SQL
Я пытаюсь получить длину строки в SQL (используя Firebird версии 2.x+). Всякий раз, когда я выбираю длину строки, она дает мне фактическую назначенную максимальную длину этой строки, в отличие от получения длины количества символов, взятых в записи, как вы можете видеть здесь:
как вы можете себе представить, это мне не поможет, так как я не могу упорядочить по длине, так как я пытаюсь упорядочить по атрибуту, которому назначена постоянная длина.
Как бы я достиг того, чего я пытаюсь достичь? То есть: получение длины количества символов, взятых в строке.
1 ответ
Как задокументировано для char_length
:
Заметки
- С аргументами типа
CHAR
эта функция возвращает длину формальной строки (т.е. объявленную длину поля или переменной). Если вы хотите получить "логическую" длину, не считая конечных пробелов,TRIM
аргумент, прежде чем передать егоCHAR[ACTER]_LENGTH
,
Причины этого в том, что char
значения дополняются пробелами до объявленной длины, поэтому, по сути, они имеют заявленную длину.
Другими словами вам нужно использовать:
char_length(trim(trailing from imeprodajalca))