Hỏi về SQL Server: IN trong SQL

Mình có câu store như thế này.

select id,name,class
from student
where 1=1 and id in (@listid) -- @listid là tham số đầu vào của store nha

Nếu tham số đầu vào của mình khác null thì ko nói nhưng nếu @list = null thì làm sao để nó theo ý nghĩ sẽ thành câu dưới này: (nghĩ là kết quả sẽ ra giống như câu ở dưới)

select id,name,class
from student
where 1=1

Bác nào mạnh về SQL vào thông não mình phát.
P/S: Mình không dùng sp_executesql nhé ! Vì store mình lớn nên xài if else nhiều thấy rồi và khó bảo trì.

where 1=1 and ((@listid) IS NULL OR id in (@listid))

2 Likes

Mn ơi cho mình xin link SQL sever để học trên trường đc ko ạ , học trên trường thì dùng bản rút gọn phải ko ạ , hôm qua giờ em kiếm đủ link cài mà không đc :frowning:

Cái này gọi là khai quật lại câu hỏi cổ :slight_smile:

Để trả lời câu hỏi của bạn thì SQL Server có nhiều hàm xữ lý giá trị null, ví dụ như hàm IFNULL() có thể lồng vô câu query như sau:

select id,name,class
from student
where 1=1 and id in ( IFNULL(@listid,-1) )

Lưu ý là bạn có thể thay -1 bằng một giá trị khác sao cho nó chắc chắc ko tồn tại trong bảng student.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?