在存储过程中,如果在表的列中找到空值,则应跳过

时间:2015-12-15 06:08:22

标签: sql sql-server sql-server-2008

这里我试图检查数据列Data_export是否为空;如果是这样,那么我的查询应跳过(data + @Data_separate)部分,否则必须包含它。

我搜索了很多,但该代码无效。

这是我的原始代码......

WITH a AS 
(
   SELECT 
       data + @Data_Separate AS data, 
       srno 
   FROM   
       Data_export WITH(nolock) 
   WHERE  
       srno > @FetchSrNo 
       AND srno <= @srno 
       AND segment_indicator = 1 
       AND Mem_code = @MemberCode                       
) 
SELECT 
    -- stuff(                       
    (SELECT a.data 
     FROM   a 
     ORDER  BY srno 
     FOR xml path(''), type).value('.', 'varchar(max)') 
     --,1,0,'') 
     AS data 

1 个答案:

答案 0 :(得分:0)

Anything + NULL = NULL。所以

WITH a AS 
(
   SELECT 
       coalesce(data,'') + coalesce(@Data_Separate,'') AS data,  --or Isnull(@Data_Separate,'')
       srno 
   FROM   
       Data_export WITH(nolock) 
   WHERE  
       srno > @FetchSrNo 
       AND srno <= @srno 
       AND segment_indicator = 1 
       AND Mem_code = @MemberCode                       
) 
SELECT 
    -- stuff(                       
    (SELECT a.data 
     FROM   a 
     ORDER  BY srno 
     FOR xml path(''), type).value('.', 'varchar(max)') 
     --,1,0,'') 
     AS data