Có vẻ như SQL Server (đã thử trên 2008 R2) đang thực hiện một số RTRIM
trên các cột trong mệnh đề GROUP BY
. Có ai để ý điều này không? Am i thiếu cái gì ở đây?SQL Server loại bỏ SPACE trong GROUP BY
Hai lựa chọn sẽ trả lại cùng một tập hợp kết quả trong truy vấn bên dưới, điều này không phải là trường hợp tôi tin.
declare @t table(Name varchar(100), Age int)
insert into @t values ('A', 20)
insert into @t values ('B', 30)
insert into @t values ('C', 40)
insert into @t values ('D', 25)
insert into @t values (' A', 21)
insert into @t values ('A ', 32)
insert into @t values (' A ', 28)
select
Name,
count(*) Count
from @t
group by Name
select
rtrim(Name) RtrimmedName,
count(*) Count
from @t
group by rtrim(Name)
Xin vui lòng cho tôi biết suy nghĩ của bạn ...
Không thực sự. Vì vậy, tiêu chuẩn tuyên bố rằng nó sẽ đạt đến độ dài tối đa * để so sánh *, nhưng câu hỏi là về đầu ra của GROUP BY, đó là ** KHÔNG ** dài hơn như bạn mong đợi nếu đúng là các trung gian được kéo dài (họ không).Nó chỉ đơn giản là ''a' = 'a'' (dấu cách bị bỏ qua) – RichardTheKiwi
@RichardTheKiwi - phần 8.2 "Tùy thuộc vào trình tự đối chiếu, hai chuỗi có thể com- pare bằng nhau ngay cả khi chúng có độ dài khác nhau hoặc con- Khi các hoạt động MAX, MIN, DISTINCT, tham chiếu đến cột nhóm và các toán tử UN2, EXCEPT và INTERSECT tham chiếu đến ký tự chuỗi, ** giá trị cụ thể được chọn bởi các hoạt động này từ một tập các giá trị bằng nhau như vậy phụ thuộc vào việc thực hiện. ** "(Nhấn mạnh thêm) –