MySQL 如何在MySQL中按字符串的某个部分排序?


<!–

–>

MySQL 如何在MySQL中按字符串的某个部分排序?

在MySQL中,按字符串的某个部分排序可以使用SUBSTR()LEFT()函数。SUBSTR()函数返回指定字符串的子串,既可以指定起始位置,也可以指定长度。LEFT()函数也返回字符串的子串,但是只需指定长度,不需要指定起始位置。

下面的SQL语句将按照字符串的第2个单词进行降序排序:

SELECT *
FROM table_name
ORDER BY SUBSTR(column_name, INSTR(column_name, ' ', 1)+1),
         SUBSTR(column_name, 1, INSTR(column_name, ' ', 1)-1) DESC;

INSTR()函数返回一个字符串在另一个字符串中第一次出现的位置。这里的第二个参数是空格,表示查询第一个空格出现的位置。第一个SUBSTR()函数实际上是选取了第2个单词之后的子字符串,而第二个SUBSTR()函数选取的是第1个单词之前的子字符串。

(adsbygoogle = window.adsbygoogle || []).push({});

如果需要按照字符串的第3个单词进行升序排序,则SQL语句如下:

SELECT *
FROM table_name
ORDER BY SUBSTR(column_name, INSTR(column_name, ' ', 1)+1, 
                    INSTR(SUBSTR(column_name, INSTR(column_name, ' ', 1)+1), ' ', 1)),
         SUBSTR(column_name, 1, INSTR(column_name, ' ', 1)-1) ASC;

这里的第一个SUBSTR()函数选取的是第2个单词之后的子字符串,并通过再次使用INSTR()函数确定第3个单词的起始位置。这个子字符串将被用于升序排序。

阅读更多:

结论

在MySQL中,使用SUBSTR()LEFT()函数按字符串的某个部分排序非常方便。语法简单,对于复杂的字符串也能很好地处理。