Sql server 检查列表是否为空或null,然后检查SQL
我有一个这样的疑问Sql server 检查列表是否为空或null,然后检查SQL,sql-server,sql-server-2012,Sql Server,Sql Server 2012,我有一个这样的疑问 with t as ( <your query here> ) select t.id, t.name, t.randomid, trand.name as randomname from t left join t trand on t.randomid = trand.id where t.id in (select item from dbo.ufnSplit(@ids,',')); 试试这个Where子句 试试这
with t as (
<your query here>
)
select t.id, t.name, t.randomid, trand.name as randomname
from t left join
t trand
on t.randomid = trand.id
where t.id in (select item from dbo.ufnSplit(@ids,','));
试试这个Where子句
试试这个Where子句
您可以使用条件WHERE子句,如下所示:
with t as (
<your query here>
)
select t.id, t.name, t.randomid, trand.name as randomname
from t left join
t trand
on t.randomid = trand.id
where @ids IS NULL OR t.id IN (select item from dbo.ufnSplit(@ids,','));
因此,如果为NULL,它将返回所有内容,否则它将计算WHERE子句的或部分内容
您可能需要编辑函数:dbo.ufnSplit以优雅地处理空输入,这样才能工作。您可以使用条件WHERE子句,如下所示:
with t as (
<your query here>
)
select t.id, t.name, t.randomid, trand.name as randomname
from t left join
t trand
on t.randomid = trand.id
where @ids IS NULL OR t.id IN (select item from dbo.ufnSplit(@ids,','));
因此,如果为NULL,它将返回所有内容,否则它将计算WHERE子句的或部分内容
您可能需要编辑函数:dbo.ufnSplit以优雅地处理NULL输入,这样才能工作。这将检查@ids是NULL还是空,然后检查where子句
with t as (
<your query here>
)
select t.id, t.name, t.randomid, trand.name as randomname
from t left join
t trand
on t.randomid = trand.id
where @ids = ''
or @ids is null
or t.id in (select item from dbo.ufnSplit(@ids,','))
这将检查@ids是否为null或空,然后检查where子句
with t as (
<your query here>
)
select t.id, t.name, t.randomid, trand.name as randomname
from t left join
t trand
on t.randomid = trand.id
where @ids = ''
or @ids is null
or t.id in (select item from dbo.ufnSplit(@ids,','))