Bạn có thể làm điều này:
ORDER BY IF(SUBSTRING(name, 1, 14) = 'University of ', SUBSTRING(name, 15), name)
Có thể là một ý kiến hay khi tạo một chế độ xem trên bảng này, chiếu thêm một name_value
cột được đặt thành IF()
biểu thức trên. Sau đó, bạn có thể sắp xếp theo cột này và chọn nó mà không cần phải kiểm tra các truy vấn của mình với IF()
.
Chế độ xem ví dụ, giả sử rằng tên trường đại học được lưu trữ trong cột 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;
Sau đó, bạn có thể chọn từ Universities
giống như cách bạn làm từ list_universities
, ngoại trừ nó sẽ có thêm name_value
mà bạn có thể chọn hoặc sắp xếp theo thứ tự, hoặc bất cứ thứ gì.
Lưu ý rằng cách tiếp cận này (cũng như ORDER BY IF(...)
) sẽ không thể sử dụng bất kỳ chỉ mục nào trên name
để cải thiện hiệu suất của loại.