<!–
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()
函数按字符串的某个部分排序非常方便。语法简单,对于复杂的字符串也能很好地处理。