Итак, хотя я знаю, что вы нашли удовлетворительный ответ, я некоторое время боролся с этой проблемой, и мы ранее определили, что это не может быть сделано достаточно хорошо в SQL, и мы собирались использовать javascript в массиве JSON.
Вот как я решил это, просто используя SQL. Надеюсь, это полезно для других:
У меня были такие данные как:
Scene 1
Scene 1A
Scene 1B
Scene 2A
Scene 3
...
Scene 101
Scene XXA1
Scene XXA2
Я на самом деле не "кастовал" вещи, хотя, полагаю, это тоже сработало.
Сначала я заменил части, которые не менялись в данных, в данном случае «Сцена», а затем сделал LPAD, чтобы выстроить все в ряд. Похоже, что это позволяет довольно хорошо сортировать альфа-строки так же, как и пронумерованные.
Мое предложение ORDER BY
выглядит так:
ORDER BY LPAD(REPLACE(`table`.`column`,'Scene ',''),10,'0')
Очевидно, что это не поможет с первоначальной проблемой, которая не была столь однородной, - но я думаю, что это, вероятно, сработает для многих других связанных проблем, поэтому поставим ее там.