【问题标题】:Getting the length of a string in SQL在 SQL 中获取字符串的长度
【发布时间】:2017-06-30 22:50:45
【问题描述】:

我正在尝试获取 SQL 中字符串的长度(使用 Firebird 版本 2.x+)。 每当我选择字符串的长度时,它都会给我该字符串的实际分配的最大长度,而不是获取记录中包含多少个字符的长度,如您在此处看到的:

您可以想象,这对我没有帮助,因为我无法按长度排序,因为我试图按分配了恒定长度的属性进行排序。

我将如何实现我想要实现的目标?即:获取一个字符串中取多少个字符的长度。

【问题讨论】:

  • 您的列是 CHAR 还是 VARCHAR?
  • 数据类型是 CHAR,这没有任何意义,但是数据库是我的教授创建的,并且给定的任务之一是按名称长度排序。而且我仍然不确定他是否在那里犯了错误,或者是否有办法计算 CHAR 中占用的字符
  • 手边没有 Firebird 的副本,但没有可用的 Trim() 或 RTrim() 或 LTrim() 标量函数吗?
  • firebirdsql.org/refdocs/langrefupd20-char-length.html - 如果您想获得“逻辑”长度,不计算尾随空格,请在将参数传递给 CHAR[ACTER]_LENGTH 之前右修剪参数。
  • 请将您的屏幕截图以文本形式发布,尤其是查询本身。

标签: sql character firebird string-length


【解决方案1】:

正如 char_length 所记录的那样:

注意事项

  • 使用CHAR 类型的参数,此函数返回正式的字符串长度(即字段或变量的声明长度)。如果您想获得“逻辑”长度,不包括尾随空格,请在将参数传递给 CHAR[ACTER]_LENGTH 之前将其右向 TRIM

原因是char 值用空格填充到声明的长度,所以本质上它们是声明的长度。

换句话说你需要使用:

char_length(trim(trailing from imeprodajalca))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多