尽管经过一番认真的搜索,我似乎无法找到任何关于此的信息。如果我错过了之前关于此事的帖子,我很抱歉。
无论如何,我问我的数据库(sql server 2008)是否有一个uniqueidentifier作为参数。但是,如果输入参数为null,我希望所有帖子都返回。我会尝试在代码中显示它,也许这样更容易获得要点:
select * from ongoing_tbl_ongoing where ongoingState like
case when @inParameter is null then
'%' --This is where things go haywire
else
@inParameter --This is a uniqueidentifier type (Guid)
end
or ongoingState is null
但是这很失败(从字符串转换为uniqueidentifier时转换失败。)
有趣的是......以下代码有效:
select * from ongoing_tbl_ongoing where ongoingState like '%'
似乎CASE条款迫使演员或以其他方式阻止我对uniqueidentifier进行通配符搜索。任何指针都将受到高度赞赏。如果您想了解更多信息,请告诉我。
最诚挚的问候 -K
答案 0 :(得分:0)
问题是'%'
和@inParameter
必须具有相同的数据类型。您可以将@inParameter
转换为VARCHAR
或使用此查询吗?
SELECT *
FROM ongoing_tbl_ongoing
WHERE ongoingState IS NULL OR
@inParameter IS NULL OR
ongoingState LIKE @inParameter
答案 1 :(得分:0)
如果您想使用案例陈述
select *
from
ongoing_tbl_ongoing
where
ongoingState is null
or
ongoingState =
case when @inParameter is null then ongoingState
else @inParameter
end