One thing you can do is store a new column which duplicates the column you want to sort, but stores it in a transformed format that will sort naturally when using the regular sort algorithm.
Conceptually, you can do this by left-padding digit sequences with zeros to a length that will be as long as the longest possible numeric sequence that could occur in your string.
My solution isn't totally rugged, but if your strings just have digit sequences of known maximum lengths, then you can left pad them with zeros to that known max length. For example, if you had cd track titles with the track number embedded into the title like:
1 Foo
2 Bar
...
10 Baz
Maybe you decide that the longest numeric sequence possible would be 3(999 possible tracks), so you would pad the numeric sequences like
001 Foo
002 Bar
...
010 Baz
This works fine with strings that have multiple numeric sequences.
Sample php code, although you could write a mysql stored function to do this, and then use insert and update triggers on the table so that it's maintained transparently.
$input = 'a44b1c399d4';
$nat = preg_replace_callback('#\d+#', function($m) {
return str_pad($m[0], 3, '0', STR_PAD_LEFT);
}, $input);
echo $nat; // a044b001c399d004
Then just sort in mysql via
order by natsort_column
This also lets you put an index on that column, giving you good sort performance.