按列长度过滤结果

Posted

技术标签:

【中文标题】按列长度过滤结果【英文标题】:Filter results by the column length 【发布时间】:2013-12-22 08:22:48 【问题描述】:

我需要从字段必须超过给定长度的查询中过滤一些结果。 我知道这不起作用,但它会是这样的:

SELECT * FROM MyTable WHERE COUNT(description) > 50

这是可行的,还是我以后必须在 php 上过滤(在我的情况下)?

【问题讨论】:

I know that doesn't work 顺便说一下,WHERE 子句中不能使用聚合函数。您可能会使用 - select * from my_table where length(my_col)>50; @bansi 我会记住这一点的。 【参考方案1】:

鉴于您使用的是 mysql,您可能正在寻找 LENGTH()

对于标准 SQL,该函数称为LEN()

如果您处理的是 UTF-8,则必须使用 CHAR_LENGTH(),因为 LENGTH() 以字节为单位测量长度,而CHAR_LENGTH() 将正确地以字符为单位测量长度。

【讨论】:

【参考方案2】:
SELECT * FROM MyTable WHERE LENGTH(description) < 50

【讨论】:

将 LEN 修改为 LENGTH【参考方案3】:

使用这个查询:

SELECT * FROM MyTable WHERE LENGTH(description) > 50

阅读更多:LENGTH mysql 中的函数。

参考:MySQL - How to select data by string length

【讨论】:

【参考方案4】:

试试这个

SELECT * FROM MyTable WHERE LENGTH(description) > 50

【讨论】:

以上是关于按列长度过滤结果的主要内容,如果未能解决你的问题,请参考以下文章

在常规过滤查询中使用“COUNT INTO 长度”或聚合函数

在线文本过滤小于指定长度工具

使用列的长度过滤 DataFrame

nHibernate QueryOver:过滤主元素长度和子元素长度

如何根据数据包长度过滤 tcpdump 输出

多维容器按列组合元素