2011-10-21 34 views
6

Tôi đã sử dụng LINQ to SQL trong nhiều năm nay, nhưng đây là lần đầu tiên tôi thấy hành vi này.Lỗi trong LINQ to SQL với chuỗi rỗng trên cơ sở dữ liệu

Tôi có bảng DB có một vài cột (varchar(15)) có thể chứa các chuỗi trống (''). Tôi xác minh điều này bằng cách chạy LEN(Column) và kiểm tra kết quả là 0.

Bây giờ khi tôi gọi điều này từ LINQ2SQL, nó trả về trường đối tượng bằng một chuỗi chứa một dấu cách đơn (string.Length == 1).

Có một vài cách giải quyết mà tôi có thể áp dụng, như làm cho chúng NULL trên DB hoặc cắt xâu chuỗi, nhưng tôi muốn biết liệu có ai đã gặp lỗi này hay không. . Nếu không, tôi sẽ báo cáo.

Cảm ơn.

+0

Is it này xảy ra để phân biệt giữa giá trị NULL và chuỗi rỗng? Ví dụ: Trong một tập tin như thế nào bạn sẽ lưu trữ một chuỗi NULL (tập tin len = 0) và một chuỗi rỗng (cũng tập len = 0). Trong chuỗi NULL thế giới OO và chuỗi rỗng là 2 thứ khác nhau trong khi trong thế giới dữ liệu chúng có vẻ giống nhau – Ankur

Trả lời

8

Vấn đề là với LEN chức năng:

SELECT LEN(' ') 

Returns 0 trong SQL Server; nó là tổng PITA.

Nhưng

SELECT DATALENGTH(' ') 

Returns 1

+0

Cảm ơn ngọt ngào! Một trong những nhân viên DB của chúng tôi cũng đã học được điều gì đó mới :) – leppie

+0

Chỉ cần thêm, 'LEN' với bỏ qua khoảng trống ở cuối. – leppie

+0

Điều này khiến tôi khó chịu trong nhiều tháng nay! – briantyler

Các vấn đề liên quan