代码之家  ›  专栏  ›  技术社区  ›  Parveez Ahmed

在mysql中,如何获取存储在表的列中的varchar值的最大字符数?

  •  1
  • Parveez Ahmed  · 技术社区  · 6 年前

    我有一张桌子叫“ 城市 “有数千条记录,只有两个字段 城市 状态 是的。尽管表中定义为varchar(100)的两个字段的类型和长度,但我确信列中的任何值都不占用100个字符。我想写一个查询来知道 状态 获取最抢劫的字符数。我试过:

    select distinct max(state) from cities;
    

    我知道这不是我想要的问题是否有任何SQL函数来完成此任务?

    3 回复  |  直到 6 年前
        1
  •  0
  •   Strawberry    6 年前

    你不需要 distinct 只有一个最大长度。

    要返回具有最长值的状态:

    select state
    from cities
    where length(state) = (select max(length(state)) from cities)
    

    ——-

    这些查询可能更有帮助…

    返回所有状态及其长度,其长度大于某个长度(如10):

    select state, length(state)
    from cities
    where length(state) > 10
    order by 2 desc
    

    要返回最长的10个州名称及其长度:

    select state, length(state)
    from cities
    order by 2 desc
    limit 10
    
        2
  •  0
  •   Tim Biegeleisen    6 年前

    另一种选择是 ORDER BY 具有 LIMIT 以下内容:

    SELECT state, CHAR_LENGTH(state) AS length
    FROM cities
    ORDER BY CHAR_LENGTH(state) DESC
    LIMIT 1;
    

    如果有关系,你也想要这些关系,那么我们可以尝试不同的方法。

        3
  •  -1
  •   Azhy    6 年前

    这个问题是 复制 但我会回答,你应该用 length() 函数与 max() 我得到的函数 here :。-

    select max(length(state)) from cities;