我正在尝试在SQL中获取字符串的长度(使用Firebird版本2.x+)。 无论何时选择一个字符串的长度,它都会给出该字符串实际分配的最大长度,而不是获取记录中占用多少个字符的长度,您可以在这里看到: 如你所想象的那样,这对我没有帮助,因为我无法按长度排序,因为我试图按一个已分配了常数长度的属性排序。 我该如何实现我想要实现的目标呢?也就是:获取字符串中取了多少个字符的长度。
根据char_length的文档: 注意事项 对于类型为CHAR的参数,此函数返回正式字符串长度(即字段或变量的声明长度)。如果要获取“逻辑”长度,不计算尾随空格,请在将其传递给CHAR[ACTER]_LENGTH之前对参数进行右侧TRIM。 这样做的原因是char值会用空格填充到声明的长度,因此它们实质上始终具有声明的长度。 换句话说,您需要使用: char_length(trim(trailing from imeprodajalca))