Можете да направите това:
ORDER BY IF(SUBSTRING(name, 1, 14) = 'University of ', SUBSTRING(name, 15), name)
Може да е добра идея да създадете изглед върху тази таблица, проектиращ допълнителна name_value
колона, зададена на IF()
израз по-горе. След това можете да подредите по тази колона и да я изберете, без да се налага да замърсявате заявките си с IF()
.
Примерен изглед, като се приеме, че името на университета се съхранява в колоната 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;
След това можете да изберете от Universities
по същия начин, по който го правите от list_universities
, освен че ще има допълнителна name_value
колона, която можете да изберете, да подредите или каквото и да е.
Имайте предвид, че този подход (както и ORDER BY IF(...)
) няма да може да използва никакъв индекс на name
за подобряване на производителността на вида.