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

时间:2018-07-22 03:44:47

标签: mysql

我有一个名为“ 城市”的表,该表具有成千上万条记录,并且只有两个字段,即 city 状态 。尽管在我的表中两个字段的类型和长度都定义为varchar(100),但我确定列中的值都不会占用100个字符。我想写一个查询来了解 状态 的哪个值占用最多的字符数。我尝试过:

select distinct max(state) from cities;

我知道这不是我想要的查询。有任何SQL函数可以完成此任务吗?

3 个答案:

答案 0 :(得分:0)

您不需要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

答案 1 :(得分:0)

另一种选择是将ORDER BYLIMIT一起使用:

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

如果可能存在联系并且您也想要这些联系,那么我们可以尝试另一种方法。

答案 2 :(得分:-1)

这个问题是重复,但是我会回答,您应该将length()函数与我得到heremax()函数一起使用:-

select max(length(state)) from cities;