如何修改此存储过程以同时返回具有 NULL 列值的行?
@title VARCHAR(50) NULL,
@initials VARCHAR(100) NULL,
@surname VARCHAR(100) NULL,
AS
BEGIN
SELECT
ID, MEMBERSHIP_ID, TITLE, INITIALS, SURNAME,
FROM
MEMBERSHIP_DTLS
WHERE
TITLE = (CASE WHEN @title IS NULL THEN (TITLE) ELSE @title END)
AND INITIALS = (CASE WHEN @initials IS NULL THEN INITIALS ELSE @initials END )
AND SURNAME = (CASE WHEN @surname IS NULL THEN SURNAME ELSE @surname END)
END
GO
我在这里想要完成的是,如果将 NULL 参数传递给过程,则返回的结果将不会被该参数过滤,因此如果所有参数都为空,则返回该表中的所有内容。
上面的内容仅适用于不为空的列值,当将空值传递给所有参数然后不返回任何内容时,实际的存储过程有更多参数,因此我无法找到重写表达式以匹配每个参数的解决方案组合。
最佳答案
我相信你想要的逻辑是:
WHERE (TITLE = @title OR @title IS NULL) AND
(INITIALS = @initials OR @initials IS NULL) AND
(SURNAME = @surname OR @surname IS NULL)
关于sql - 如何从 NULL 列中获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53885607/