Podrías hacer esto:
ORDER BY IF(SUBSTRING(name, 1, 14) = 'University of ', SUBSTRING(name, 15), name)
Podría ser una buena idea crear una vista sobre esta tabla que proyecte un name_value
extra columna establecida en IF()
expresión anterior. Luego puede ordenar por esta columna y seleccionarla sin tener que contaminar sus consultas con IF()
.
Vista de ejemplo, asumiendo que el nombre de la universidad está almacenado en la columna name
:
CREATE VIEW Universities AS
SELECT
list_universities.*,
IF(SUBSTRING(name, 1, 14) = 'University of ',
SUBSTRING(name, 15),
name) AS name_value
FROM list_universities;
Luego puede seleccionar entre Universities
de la misma manera que lo hace desde list_universities
, excepto que tendrá un name_value
extra columna que puede seleccionar, ordenar o lo que sea.
Tenga en cuenta que este enfoque (así como ORDER BY IF(...)
) no podrá usar ningún índice en name
para mejorar el rendimiento del género.