Получение длины строки в SQL

Я пытаюсь получить длину строки в SQL (используя Firebird версии 2.x+). Всякий раз, когда я выбираю длину строки, она дает мне фактическую назначенную максимальную длину этой строки, в отличие от получения длины количества символов, взятых в записи, как вы можете видеть здесь:

введите описание изображения здесь

как вы можете себе представить, это мне не поможет, так как я не могу упорядочить по длине, так как я пытаюсь упорядочить по атрибуту, которому назначена постоянная длина.

Как бы я достиг того, чего я пытаюсь достичь? То есть: получение длины количества символов, взятых в строке.

1 ответ

Решение

Как задокументировано для char_length:

Заметки

  • С аргументами типа CHAR эта функция возвращает длину формальной строки (т.е. объявленную длину поля или переменной). Если вы хотите получить "логическую" длину, не считая конечных пробелов, TRIM аргумент, прежде чем передать его CHAR[ACTER]_LENGTH,

Причины этого в том, что char значения дополняются пробелами до объявленной длины, поэтому, по сути, они имеют заявленную длину.

Другими словами вам нужно использовать:

char_length(trim(trailing from imeprodajalca))
Другие вопросы по тегам