我有一个名为“cities”的表,其中有数千条记录,只有两个字段,即city和state。虽然在我的表中,这两个字段的类型和长度都定义为varchar(100),但我确信列中没有值占用100个字符。我想写一个查询来知道statecolumn的哪个值采用的字符数最多。我试过:
select distinct max(state) from cities;
我知道这不是我想要的。有没有sql函数来完成这个任务?
xxhby3vn1#
这个问题是重复的,但我会回答,你应该使用 length() 函数与 max() 我在这里得到的函数:-
length()
max()
select max(length(state)) from cities;
jv4diomz2#
另一种选择是使用 ORDER BY 与 LIMIT :
ORDER BY
LIMIT
SELECT state, CHAR_LENGTH(state) AS length FROM cities ORDER BY CHAR_LENGTH(state) DESC LIMIT 1;
如果有关系,你也希望这些关系,那么我们可以尝试不同的方法。
wswtfjt73#
你不需要 distinct ; 只有一个最大长度。要返回具有最长值的状态,请执行以下操作:
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
3条答案
按热度按时间xxhby3vn1#
这个问题是重复的,但我会回答,你应该使用
length()
函数与max()
我在这里得到的函数:-jv4diomz2#
另一种选择是使用
ORDER BY
与LIMIT
:如果有关系,你也希望这些关系,那么我们可以尝试不同的方法。
wswtfjt73#
你不需要
distinct
; 只有一个最大长度。要返回具有最长值的状态,请执行以下操作:
——-
这些查询可能更有帮助。。。
返回所有状态及其长度,其长度大于某一长度(如10):
要返回最长的10个州名称及其长度: