我有一个字段有这种信息“web-1 / 1.,web-2 / 2.,web-3/3,web-4/4,web-5/5。”。其他寄存器可能有不同的值,如“web-1/4,web-2/5,web-3/1,web-4/2,web-5/3”。
我想选择和订购,让我们说web-2 /?将是web-2/1,web-2/2,web-2/3等所有包含web-2的字段和按最后一个数字排序
我想创建一个不同网站的精选属性脚本并指定功能号。不同的属性,不同的网站不同的顺序
答案 0 :(得分:14)
我建议您查看MySQL String Functions,更具体地说是SUBSTRING_INDEX
函数。我建议SUBSTRING
以上的这个原因是因为斜杠之前或之后的数字可能超过一个数字,这会使第一和/或第二部分的长度发生变化。
示例:强>
SELECT `info`,
SUBSTRING_INDEX(`info`, '/', 1) AS `first_part`,
SUBSTRING_INDEX(`info`, '/', -1) AS `second_part`
FROM `table`
ORDER BY `first_part` ASC,
`second_part` ASC;
<强>结果:强>
附加示例
在这个例子中,我使用CAST
将第二部分转换为无符号整数,以防万一它包含其他字符,如符号或字母。换句话说,“web-4/15”的第二部分。将是“15”,“web-4/15 ****”的第二部分也将是“15”。
SELECT `info`,
SUBSTRING_INDEX(`info`, '/', 1) AS `first_part`,
CAST(SUBSTRING_INDEX(`info`, '/', -1) AS UNSIGNED) `second_part`
FROM `table`
ORDER BY `first_part` ASC,
`second_part` ASC;
答案 1 :(得分:0)
如果字符串总是与您描述的模式匹配,我们可以假设您要排序的第一个值是字符串中的索引位置5(左起5个字符)。第二个字符是索引7.考虑到这一点,您可以执行以下操作,假设字符串'web-2/1'位于名为field的字段中:
SELECT
`field`
FROM
`table`
ORDER BY
substr(`field`, 5, 1) ASC,
substr(`field`, 7, 1) ASC;
substr()函数将字段作为第一个选项,我们上面提到的索引,以及一个选项第三个参数,它是从第二个选项开始包含多少个字符的计数。
如果字符串稍微关闭,你可以根据需要调整它,主要是subtr()函数中的第二个选项。
答案 2 :(得分:0)
只需添加:...ORDER BY SUBSTRING(username, 2) ASC
答案 3 :(得分:-1)
我会这样做
SELECT info
FROM table
WHERE info LIKE 'web-2%'
ORDER BY info ASC