Buenos días rafamadrile:
puedes hacerlo más o menos así:
select * from ordenar_temp order by replace(campo, '¡', '');
como mencionas qué puedes tener varios caracteres especiales te recomendaría que la creación de una función que te elimine todos los caracteres no alfanuméricos, de tal manera que tu consulta quede más o menos asi
Código SQL:
Ver originalCREATE FUNCTION `pruebas`.`fn_elimina_caracteres_especiales`
(CAMPO CHAR(50))
RETURNS CHAR(50)
BEGIN
DECLARE TEMP VARCHAR(50);
SET TEMP = REPLACE(CAMPO, '¿', '');
SET TEMP = REPLACE(TEMP, '?', '');
SET TEMP = REPLACE(TEMP, '¡', '');
SET TEMP = REPLACE(TEMP, '!', '');
--Continuar con todos los caracteres especiales
RETURN TEMP;
END
SELECT * FROM ordenar_temp ORDER BY fn_elimina_caracteres_especiales(campo);
Saludos
Leo.