Lỗi gõ lệnh trong SQL: "The ntext data type cannot be selected as DISTINCT because it is not comparable."
Lỗi này xuất hiện khi bạn sử dụng lệnh DISTINCT, lệnh này có tác dụng lọc bỏ các bản ghi có chung giá trị trong cột chỉ định
Ví dụ: select distinct MaKhachHang from KhachHang
Lấy danh sách MaKhachHang đồng thời lược bỏ các MaKhachHang trùng nhau
Nguyên nhân của lỗi trên là do:
- Kiểu dữ liệu đưa vào không hợp lệ: distinct không lược bỏ các cột có kiểu dữ liệu ntext
- Có thể bạn sử dụng lệnh * trong select và trong danh sách các cột được lấy có 1 cột có kiểu là ntext:
Ví dụ: select distinct kh.MaKhachHang, kh.* from KhachHang kh
Bạn đang muốn lấy tất cả các thông tin của KhachHang và muốn lọc MaKhachHang trùng và dùng câu lệnh như trên thì SQL sẽ báo lỗi.
Cách khắc phục:
- Chuyển kiểu dữ liệu đưa vào về nvarchar hay nchar:
Ví dụ: select distinct cast( kh.MaKhachHang as nvarchar(10)) from KhachHang kh
- Hạn chế dùng lệnh *, khai báo các rõ các cột muốn lấy giá trị.
Chúc các bạn fix lệnh thành công!
0 comments:
Post a Comment