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,','))