Mã này hoạt động ok:Operand kiểu dữ liệu NULL không hợp lệ cho max hành
select fk, max(case when 1 = 0 then 1 else null end) maxx
from (values(1, null), (1, null)) x(fk, a)
group by fk;
đầu ra:
fk maxx
----------- -----------
1 NULL
với:
Warning: Null value is eliminated by an aggregate or other SET operation.
Nhưng mã này:
select fk, max(a) maxx
from (values(1, null), (1, null)) x(fk, a)
group by fk;
cho lỗi:
Msg 8117, Level 16, State 1, Line 5 Operand data type NULL is invalid for max operator.
Trong cả hai trường hợp máy chủ sql tính toán max
từ null
và null
? Phải không?
Bạn có thể thực hiện công việc thứ hai bằng cách truyền một cách rõ ràng null vào một kiểu dữ liệu. 'select fk, max (a) maxx từ (giá trị (1, CAST (NULL AS varchar (25))), (1, CAST (NULL AS varchar (25)))) x (fk, a) nhóm theo fk; 'Bạn không thể nhận được tối đa của null khi datatype cho cột là không rõ. Bạn sẽ lưu ý khi bạn thử và tạo một bảng chỉ có null; nó cũng không thành công bởi vì một kiểu dữ liệu không xác định. – xQbert