Như nhiều người ở đây đã nói, phương pháp tốt nhất là ISNULL(), tuy nhiên nếu bạn muốn một cách dễ dàng để tạo ra tất cả những ISNULL() 's sử dụng đoạn mã sau:
SELECT 'ISNULL([' + COLUMN_NAME + '], ' +
CASE
WHEN DATA_TYPE = 'bit' THEN '0'
WHEN DATA_TYPE = 'int' THEN '0'
WHEN DATA_TYPE = 'decimal' THEN '0'
WHEN DATA_TYPE = 'date' THEN '''1/1/1900'''
WHEN DATA_TYPE = 'datetime' THEN '''1/1/1900'''
WHEN DATA_TYPE = 'uniqueidentifier' THEN '00000000-0000-0000-0000-000000000000'
ELSE '''''' -- everything else get's an empty string
END + ') AS [' + COLUMN_NAME + '],'
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'TableName'
này sẽ làm cho công việc tẻ nhạt một tổng thể dễ dàng hơn nhiều, sau đó bạn chỉ phải chỉnh sửa đầu ra để giải thích cho các loại trường (int, varchar, ngày tháng, vv)
Edit: chiếm kiểu dữ liệu khác nhau với giá trị mặc định ..
Nguồn
2011-10-28 14:52:09
Ngoài ra bạn phải xem xét kiểu cột vì số '0' không phải là giá trị thay thế hợp lệ cho tất cả các loại cột – sll
Cập nhật để phù hợp;) tất nhiên tôi có thể đã bỏ lỡ một loại .. nhưng điều đó thực sự phụ thuộc vào những gì anh ấy đang sử dụng .. –
Tôi sẽ viết một hàm để xây dựng truy vấn đúng, nhưng nếu nó hoạt động, đó có lẽ là giải pháp tốt nhất. – Alec