多年前,当时刚毕业的我还比较青涩,后端会把N多个要检索的字段传入到存储过程中,我当时通常的写法是拼Sql,大概长这样:
DECLARE @WHERE VARCHAR(MAX) = '1=1';
IF @TITLE <> ''
BEGIN
SET @WHERE += ' AND Title = @TITLE'
END
IF @AGE <> ''
BEGIN
SET @WHERE += ' AND Age = @Age'
END
EXEC('SELECT * FROM USER WHERE ' + @WHERE);
字段多的时候拼的SQL到后来我自己都缕不明白了。
后来看了领导写的存储过程,大概长这样:
SELECT *
FROM USER
WHERE
((@TITLE <> '' AND Title = @TITLE) OR @TITLE = '')
AND
((@Age <> '' AND Age = @Age) OR @Age = '')
执行效率比我写的不知道高了多少,只感叹又学了一招。
后来领导又推荐了一款免费sql工具,SQLynx,也很好用,官网可以直接下