请检查我当前的存储过程。
USE [CastingDatabase]
GO
/****** Object: StoredProcedure [dbo].[Searching_Talents] Script Date: 11/11/2015 1:41:19 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Searching_Talents]
@name nvarchar(100),
@age_from nvarchar(10),
@age_to nvarchar(10)
AS
BEGIN
SELECT *
FROM [dbo].[Talents]
WHERE(
((@name is null) or (@name='') or ([dbo].[Talents].[Name] LIKE '%'+@name+'%'))
AND
(((@age_to is null) or (@age_to='') or (DATEDIFF(YEAR,Talents.DOB,GETDATE()) IN
(
SELECT CAST (Item as int) FROM dbo.SplitString(@age_to,',')
)
))
)
)
ORDER BY Name
END
我想在第二个where子句中添加一些if_else条件语句。
我该如何添加?
我想像这样添加
AND(if(@age_from is null){---- my codes ----})
P.S。我是存储过程的新手。请帮帮我。
答案 0 :(得分:1)
将CASE添加到要检查某个值的位置。这不仅适用于过程,它适用于sql server中的所有查询
...
AND (
CASE
WHEN @age_from IS NULL
THEN yourCode
END
)
或者如果您只需要检查是否为空并写下其他内容,则可以这样检查:
...
AND (ISNULL(@age_from, defaultValue)
在这种情况下,如果age_from的值为null,则sql server将把defaultValue放在上面的代码中。