我有一个数据集,我想选择与输入值匹配的记录。但是我只想尝试将数据集中的字段与输入值匹配,如果数据集值不是NULL。
我总是提交所有4个输入值。
@Tyreid
,@CarId
,@RegionId
,@CarAgeGroup
因此,对于数据集中的第一条记录,如果输入值与RegionId和CarAgeGroup匹配,则会获得成功输出。
我无法弄清楚如何为这个SELECT创建SQL脚本?
我的数据集
TyreId CarId RegionId CarAgeGroup
------ ----- -------- -----------
NULL NULL 1084 2
65 35 1084 1
5 35 1084 1
NULL 41 1085 NULL
120 NULL NULL NULL
NULL NULL 1084 2
65 NULL 1084 NULL
答案 0 :(得分:2)
您可以使用ISNULL或Coalecse达到预期结果,如果Field为NULL,则将参数与参数进行比较。
Select * from aTable
Where ISNULL(Tyreid,@Tyreid)=@Tyreid
AND ISNULL(CarId ,@CarId )=@CarId
AND ISNULL(RegionId,@RegionId)=@RegionId
AND ISNULL(CarAgeGroup,@CarAgeGroup)=@CarAgeGroup
答案 1 :(得分:1)
请记住,NULL = <any value>
会产生NULL
,您需要分别检查NULL列值:
WHERE (TyreId IS NULL OR TyreId = @Tyreid)
AND (CarId IS NULL OR CarId = @CarId)
AND (RegionId IS NULL OR RegionId = @RegionId)
AND (CarAgeGroup IS NULL OR CarAgeGroup = @CarAgeGroup)
答案 2 :(得分:0)
也许这就是你想要的?
SELECT * FROM YourTable
WHERE (TyreId = @Tyreid OR TyreId IS NULL)
AND (CarId = @CarId OR CarId IS NULL)
AND (RegionId = @RegionId OR RegionId IS NULL)
AND (CarAgeGroup = @CarAgeGroup OR CarAgeGroup IS NULL)