使用MYSQL获取最长字符串

使用MYSQL获取最长字符串,mysql,Mysql,就像数字有最小值和最大值一样,有什么东西可以得到最长和最短的字符串/文本吗 我知道长度和字符长度,但它只返回长度,而不是文本本身的值 查询: SELECT LENGTH(c.name) AS catname, i1.ref, MIN(i1.scost) as mincost, SUM(i1.instock) as totalstock FROM inventory i1 LEFT JOIN app.categories c ON i1.ref = c

就像数字有最小值和最大值一样,有什么东西可以得到最长和最短的字符串/文本吗

我知道长度和字符长度,但它只返回长度,而不是文本本身的值

查询:

SELECT 
    LENGTH(c.name) AS catname,
    i1.ref, 
    MIN(i1.scost) as mincost, 
    SUM(i1.instock) as totalstock
FROM
    inventory i1
LEFT JOIN app.categories c ON i1.ref = c.ref
WHERE
    i1.date = ( SELECT 
                   MAX(i2.date)
                FROM
                    inventory i2
                WHERE
                    i2.ref = i1.ref AND 
                    i2.location = i1.location)
    AND i1.ref LIKE '%GS-5008PL%'
GROUP BY i1.ref

编辑添加:我甚至尝试过合并,但它不起作用。获取最大长度会很好,但至少不为null会很好。

您的意思是选择一个字段在所有记录中最长的吗? 如果是,您可以使用

select * from table order by length(yourTextField) desc limit 0,1
如果表很小:

select your_column str, length(your_column) as len 
from your_table 
where length(your_column) = (select len 
                             from (select your_column str, length(your_column) as len 
                                    from your_table order by length(your_column) desc) 
                             where rownum < 2)

这很简单,但我的要复杂得多。别忘了它不会被索引,所以性能会随着结果集大小成比例下降。也许可以添加一个字段到记录长度字段,插入一个具有字段长度的记录,您可以对其进行索引。但这不是一个好主意。您认为您的问题比下面提供的示例更复杂,但我不明白为什么。看见