没有动态SQL的动态搜索

时间:2011-03-08 12:18:52

标签: sql

用户可以按名字,姓氏搜索客户,也可以选择进入城市。

只有当用户使用动态SQL输入一个没有w / o的SQL时,是否可以编写与CITY匹配的SQL?

CREATE PROCEDURE [dbo].[SearchCustomer]
@FirstName varchar(30) --REQUIRED
@LastName varchar(30)--REQUIRED
@City varchar(30)  --OPTIONAL
AS
SELECT * FROM CUSTOMER C WHERE
C.FirstName = @FirstName AND
C.LastName = @LastName AND
C.City = IsNull(@City, C.City) --This won't Work if CITY is optional in the database

3 个答案:

答案 0 :(得分:6)

尝试:

(@City is null OR C.City = @City) 

答案 1 :(得分:2)

试试这个

COALESCE(C.City,"") = COALESCE(@City,C.City,"")

有关此功能的更多信息here

答案 2 :(得分:0)

CREATE PROCEDURE [dbo].[SearchCustomer]
@FirstName varchar(30) --REQUIRED
@LastName varchar(30)--REQUIRED
@City varchar(30)  --OPTIONAL
AS

IF @City is NULL
BEGIN
SELECT * FROM CUSTOMER C WHERE
C.FirstName = @FirstName AND
C.LastName = @LastName
END
ELSE
BEGIN
SELECT * FROM CUSTOMER C WHERE
C.FirstName = @FirstName AND
C.LastName = @LastName AND
C.City = @City
END
相关问题