存储过程中的SQL条件连接(带/不带参数)
问题描述:
我正在使用SQL Server 2005中的存储过程。如果只有参数不为空,是否可以使用连接?下面是查询的一个例子:存储过程中的SQL条件连接(带/不带参数)
ALTER PROCEDURE [dbo].[SPSample]
@gender varchar(20) = null
@username varchar(20) = null
AS
SELECT
per.firstName,
per.lastName,
per.gender
FROM person per
INNER JOIN account ac on ac.idPerson = per.idPerson
WHERE (
gender = @gender
AND (@username is null or (@username is not null and @username = acc.username))
如何使INNER JOIN
只能如果@username
不为空?获得预期结果的最佳方法是什么?
答
ALTER PROCEDURE [dbo].[SPSample]
@gender varchar(20) = null
@username varchar(20) = null
AS
SELECT
per.firstName,
per.lastName,
per.gender
FROM person per
LEFT JOIN account ac
ON @username is not null
AND @username = ac.username
AND ac.idPerson = per.idPerson
WHERE --(
gender = @gender
--AND (@username is null or (@username is not null and @username = acc.username))
虽然不是最干净的,但它的工作原理
你的问题不明确。 – Sukanya 2012-02-03 06:47:20
@Sukanya你不清楚哪一部分? – Andha 2012-02-03 06:49:19
实际上你想知道的东西不清楚.. – Sukanya 2012-02-03 07:21:51