Một câu sắp xếp SQL thì rất đơn giản
Select Ten,Lop,Diem From tbHocVien Order by Ten Desc
Như vậy sẽ sắp xếp tên học viên theo thứ tự giảm dần
Nhưng khi bạn làm phần mềm thì việc sắp xếp cột nào thì do người dùng lựa chọn
Khách hàng muốn sắp xếp theo ten hay theo lop , hay theo điểm. Như vậy bạn phải viết 3 câu SQL rất dài và khó bảo hành bảo trị khi sử dụng phần mềm.
Vậy có 1 giải pháp để tạo câu SQL sắp xếp động
Ví dụ tôi đang làm 1 phần mềm bán hàng, khách hàng xem chứng từ thì họ có mục chọn cột cần sắp xếp:
So,TenKhuVuc,TenKhachHang
Tăng dần / giảm dần
Có nhiều cách code, 1 cách dễ là nối chuổi lại rồi thực câu SQL, nhưng cách này không bảo mật dễ bị lỗi bảo mật SQL SQL injection.
Cách dưới đây bạn sẽ thực thi để sắp xếp động trong sql server và bảo mật hơn.
DECLARE @SortColumn NVARCHAR(50) = 'TenKhuVuc'
DECLARE @SortOrder NVARCHAR(4) = 'DESC'
SELECT *
FROM tbchungtu
ORDER BY
CASE WHEN @SortOrder = 'ASC' THEN
CASE @SortColumn
WHEN 'So' THEN So
WHEN 'TenKhuVuc' THEN TenKhuVuc
WHEN 'TenKhachHang' THEN TenKhachHang
END
END ASC,
CASE WHEN @SortOrder = 'DESC' THEN
CASE @SortColumn
WHEN 'So' THEN So
WHEN 'TenKhuVuc' THEN TenKhuVuc
WHEN 'TenKhachHang' THEN TenKhachHang
END
END DESC
Cách code sắp xếp động sql server này hơi dài nhưng nó đảm bảo tính bảo mật cho người dùng không bị tấn cần server sql server
chú ý: các cột sắp xếp động phải cùng kiểu dữ liêu sql server, nếu khác ta cần conver cùng kiểu với nhau
Dynamic Sorting in SQL Server
Tạo câu SQL để Sắp xếp động trong SQL Server