因此,我有一个表,其中包含类型为VARCHAR(256)的某个列。现在,我希望找到该列中具有最多逗号的行(因为该列包含列分隔值)。我该怎么做呢(假设有一个MySQL数据库)?
我在想一些类似的事情
SELECT LEN(<column_name>)
FROM <table_name>
WHERE Replace(<column_name>, ......
ORDER BY DESC
LIMIT 1;我对MySQL (或一般的SQL )没有太多的经验,也找不到很多有帮助的文档,所以如果能帮助我完成这篇文章,我将非常感激。
发布于 2016-07-30 03:34:19
用''替换,后,用列长减去列长,得到逗号个数。然后按计算的列排序,以获得所需的行。
SELECT t.*,LEN(column_name) - LEN(REPLACE(column_name,',','')) num_commas
FROM table_name t
ORDER BY num_commas DESC
LIMIT 1编辑:正如@Strawberry在评论中指出的那样,如果是平局,上面的查询将从表中选取任意行。若要在存在平局时获取所有行,请使用
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,',',''))发布于 2016-07-30 03:37:25
尝尝这个。
select max(length(password)-length(replace(password,'$',''))) from [YOUR TABLE];希望这能有所帮助。
https://stackoverflow.com/questions/38666243
复制相似问题