ORDER BY在MYSQL中使用REGEXP

时间:2018-02-05 18:33:59

标签: mysql regex

我在MySQL中摆弄SCNGeometry,我想知道REGEXP命令如何与ORDER BY一起用于例如REGEXP的情况。 this,我们通常使用ORDER BY RIGHT(COL,3)按列的最后3个字符排序。

我试过了这个查询

SELECT COL FROM TABLE ORDER BY (COL REGEXP "\w{3}$") ASC

但它不起作用。我能否以某种方式修复它以获得相当于RIGHT(COL,3)

2 个答案:

答案 0 :(得分:1)

您可以为列添加别名,然后按别名列排序。您的查询将如下所示:

SELECT COL, (COL REGEXP "\w{3}$") AS MyOrderedCol FROM TABLE ORDER BY MyOrderedCol ASC

答案 1 :(得分:1)

col REGEXP '...'返回true / false(实际为1/0)值。要ORDER BY col REGEXP' ...'`您首先获得匹配的行(按任意顺序),然​​后是匹配。它按最后3个字符排序。

使用ORDER BY RIGHT(col, 3)

别名是一种方便,而不是性能问题。

如果您要在域名末尾查找com,请注意并非所有域名都是3个字符。所以,请使用

ORDER BY  SUBSTRING_INDEX(domain, '.', -1)