Du kan göra så här:
ORDER BY IF(SUBSTRING(name, 1, 14) = 'University of ', SUBSTRING(name, 15), name)
Det kan vara en bra idé att skapa en vy över den här tabellen som projicerar ett extra name_value
kolumnen satt till IF()
uttryck ovan. Sedan kan du beställa efter den här kolumnen och välja den utan att behöva förorena dina frågor med IF()
.
Exempelvy, förutsatt att universitetsnamnet är lagrat i kolumnen 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;
Sedan kan du välja från Universities
på samma sätt som du gör från list_universities
, förutom att det kommer att ha ett extra name_value
kolumn som du kan välja, eller beställa efter, eller vad som helst.
Observera att detta tillvägagångssätt (liksom ORDER BY IF(...)
) kommer inte att kunna använda något index på name
för att förbättra prestandan av denna typ.