Đây là một phần của một trong những thủ tục lưu trữ của tôi:Cách kiểm tra xem biến bảng có trống trong SQL Server không?
@dataInTable dbo.Table_Variable readonly,
....
AND (
(@dataInTable IS NULL)
OR
(item IN (SELECT T FROM @dataInTable))
)
@dataInTable IS NULL
là sai trong cú pháp, lỗi là
Must declare the scalar variable "@dataInTable"
Vì vậy, tôi thay đổi nó thành:
(SELECT T FROM @dataInTable) IS NULL
tác phẩm này nhưng nếu @dataInTable
có nhiều hơn 1 mục, tôi gặp lỗi:
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
thể hiểu được, vì vậy tôi thay đổi nó thành:
(SELECT TOP(1) T FROM @ProgramRatings) IS NULL
trình một cách hoàn hảo, những gì tôi có là hiệu suất đáng quan tâm.
tôi tự hỏi, nếu có có một cách dễ dàng hơn để kiểm tra xem một biến bảng là trống rỗng, như
AND (
(@dataInTable IS EMPTY)
OR
(item IN (SELECT T FROM @dataInTable))
)
+1 'EXISTS' có thể hiệu quả hơn' COUNT' khi nó dừng sau hàng đầu tiên. –
Cảm ơn, tôi đã thử tồn tại nhưng không thể sử dụng trong điều kiện được chọn: VÀ ( (Tôi KHÔNG THỂ NƠI NƠI TẠI ĐÂY) HOẶC (mục IN (SELECT T FROM @dataInTable)) ). Bạn có biết cú pháp chính xác –
@EricYin Có thể bạn đang tìm kiếm 'CASE' nếu bạn muốn sử dụng nó trong một' SELECT'. Khó khăn để biết những gì bạn đang làm dựa trên những mảnh bạn đã đăng cho đến nay. –