Trong cơ sở dữ liệu kế thừa của tôi, rất nhiều thời gian lược đồ không cần thiết cho phép các mục rỗng cho các cột cụ thể. Để giúp tìm ra các cột cụ thể, tôi cần thực hiện một số truy vấn của SQL Server 2008 vượt quá trình độ chuyên môn của tôi. Mục đích của tôi là thắt chặt lược đồ một chút và tự cứu mình khỏi việc xử lý trường hợp null trong mã của tôi.
Một cách thô sơ (tùy chọn 1) để giúp tôi giải quyết vấn đề của mình là chỉ lấy tất cả các bản ghi (và chọn *) có chứa ít nhất một mục nhập null, sau đó quét mắt cho các cột không chứa mục nhập null. Tất nhiên tôi chỉ có thể sử dụng Where columnA IS NULL OR columnB IS NULL OR columnC IS NULL
, nhưng điều này trở nên tẻ nhạt đối với các bảng có nhiều cột. Một số bảng trong cơ sở dữ liệu này chứa hơn hai mươi cột! Ngoài ra, có khoảng 500 bảng trong tổng số. Vì vậy, giải pháp chung là tốt nhất.
Dưới đây là ba tùy chọn cho câu trả lời sẽ thỏa mãn tôi:
- Tùy chọn 1: "lấy cho tôi tất cả các bản ghi trong đó ít nhất một trong số các cột là null". Tôi sẽ quét mắt cho các cột không có mục rỗng.
- Tùy chọn 2: Một câu trả lời thậm chí tốt hơn sẽ là một số tập lệnh nhận được danh sách các tên cột có chứa ít nhất một mục nhập null. Sau đó, tôi sẽ xem các cột nullable không có trong danh sách này theo cách thủ công.
- Tùy chọn 3: Câu trả lời tốt nhất sẽ cho tôi một danh sách các tên cột được đánh dấu là nullable trong lược đồ của chúng mặc dù không có bản ghi nào tồn tại với mục nhập null trong các cột đó.
Cảm ơn!
null
nơi nào đó hoặc một ước tính sẽ làm gì không?