首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符MySQL出现次数最多的行

问字符MySQL出现次数最多的行
EN

Stack Overflow用户
提问于 2016-07-30 03:31:12
回答 2查看 31关注 0票数 0

因此,我有一个表,其中包含类型为VARCHAR(256)的某个列。现在,我希望找到该列中具有最多逗号的行(因为该列包含列分隔值)。我该怎么做呢(假设有一个MySQL数据库)?

我在想一些类似的事情

代码语言:javascript
复制
SELECT LEN(<column_name>)
FROM <table_name>
WHERE Replace(<column_name>, ......
ORDER BY DESC
LIMIT 1;

我对MySQL (或一般的SQL )没有太多的经验,也找不到很多有帮助的文档,所以如果能帮助我完成这篇文章,我将非常感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-30 03:34:19

用''替换,后,用列长减去列长,得到逗号个数。然后按计算的列排序,以获得所需的行。

代码语言:javascript
复制
SELECT t.*,LEN(column_name) - LEN(REPLACE(column_name,',','')) num_commas
FROM table_name t
ORDER BY num_commas DESC
LIMIT 1

编辑:正如@Strawberry在评论中指出的那样,如果是平局,上面的查询将从表中选取任意行。若要在存在平局时获取所有行,请使用

代码语言:javascript
复制
SELECT t.* 
FROM tablename t
JOIN (SELECT MAX( LEN(column_name) - LEN(REPLACE(column_name,',','')) ) max_commas
      FROM table_name) m 
ON m.max_commas =  LEN(column_name) - LEN(REPLACE(column_name,',',''))
票数 4
EN

Stack Overflow用户

发布于 2016-07-30 03:37:25

尝尝这个。

代码语言:javascript
复制
select max(length(password)-length(replace(password,'$',''))) from [YOUR TABLE];

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38666243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档