我有一个名为“ 城市”的表,该表具有成千上万条记录,并且只有两个字段,即 city 和 状态 。尽管在我的表中两个字段的类型和长度都定义为varchar(100),但我确定列中的值都不会占用100个字符。我想写一个查询来了解 状态 列 的哪个值占用最多的字符数。我尝试过:
select distinct max(state) from cities;
我知道这不是我想要的查询。有任何SQL函数可以完成此任务吗?
答案 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 BY
与LIMIT
一起使用:
SELECT state, CHAR_LENGTH(state) AS length
FROM cities
ORDER BY CHAR_LENGTH(state) DESC
LIMIT 1;
如果可能存在联系并且您也想要这些联系,那么我们可以尝试另一种方法。
答案 2 :(得分:-1)
这个问题是重复,但是我会回答,您应该将length()
函数与我得到here的max()
函数一起使用:-
select max(length(state)) from cities;