Mysql varchar 字段中的自然排序
Mysql Natural sorting in varchar field
有没有办法只按数字对带有数字字段的字符串进行排序
我有这样的值
subject_code
DE 312
DE 313
DE 315
Eng 311
COMP 314
可以这样排序吗
subject_code
Eng 311
DE 312
DE 313
COMP 314
DE 315
我试过了
order by SOUNDEX(subject_code),LENGTH(subject_code),subject_code
但它没有按预期工作。
感谢您的帮助和建议。
您的情况的一种解决方法是使用字符串操作来获取数字主题代码并将其用于排序。
SELECT
subject_code
FROM yourTable
ORDER BY
CAST(SUBSTR(subject_code,
INSTR(subject_code, ' ') + 1) AS UNSIGNED)
但是,您确实应该将文本和数字代码存储在不同的列中。
输出:
此处演示:
有没有办法只按数字对带有数字字段的字符串进行排序 我有这样的值
subject_code
DE 312
DE 313
DE 315
Eng 311
COMP 314
可以这样排序吗
subject_code
Eng 311
DE 312
DE 313
COMP 314
DE 315
我试过了
order by SOUNDEX(subject_code),LENGTH(subject_code),subject_code
但它没有按预期工作。
感谢您的帮助和建议。
您的情况的一种解决方法是使用字符串操作来获取数字主题代码并将其用于排序。
SELECT
subject_code
FROM yourTable
ORDER BY
CAST(SUBSTR(subject_code,
INSTR(subject_code, ' ') + 1) AS UNSIGNED)
但是,您确实应该将文本和数字代码存储在不同的列中。
输出:
此处演示: