2010-08-31 133 views
34

早上,有可能按字符长度排序sql数据行吗?SQL查询:按字符长度排序?

例如SELECT * FROM database ORDER BY data.length()

+3

你尝试运行SQL语句在做什么? – 2010-08-31 07:32:16

+0

不是真的? ;) – TorbenL 2010-08-31 07:33:41

+0

对于那些希望使用SQLAlchemy执行此操作的人,请合并['desc()'](http://docs.sqlalchemy.org/en/rel_1_1/core/sqlelement.html?highlight=desc#sqlalchemy.sql.expression .desc)与['func()'](http://docs.sqlalchemy.org/en/rel_1_1/core/sqlelement.html?highlight=desc#sqlalchemy.sql.expression.func),如[暗示的](http://stackoverflow.com/a/15743220/594137)。 – 2016-08-02 07:52:35

回答

51

我想你想用这个:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_char-length

SELECT * FROM table ORDER BY CHAR_LENGTH(field) 

只需使用简单的长度(),但要小心,因为它计算字节数字(它不会给你带有多字节字符串的预期结果)。

+1

+1使用'CHAR_LENGTH'而不是'LENGTH'。 – Gumbo 2010-08-31 07:38:28

+0

就是这样!谢谢!! – TorbenL 2010-08-31 07:42:59

+1

如果您正在寻找MS SQL Server变种,请参阅下面的Alex Reitborts答案。 – Gigi2m02 2015-02-27 07:56:52

6
SELECT * FROM table ORDER BY length(data) desc 

如果数据是varchar字段

+0

它在sqlite3中工作 – tounaobun 2014-12-16 06:56:16

27
SELECT * FROM database ORDER BY Len(data) 
+9

此函数适用于MS SQL Server。 – Denis 2014-01-21 18:58:21

0
SELECT * FROM YourTable ORDER BY LENGTH(Column_Name) DESC 

e.g;

SELECT * FROM Customer ORDER BY LENGTH(CustomerName) DESC 
0

对于任何与sqlite的

SELECT * FROM table ORDER BY LENGTH(field) DESC