使用空值连接而不返回值

时间:2012-07-11 03:30:43

标签: sql-server-2008

我创建了一个视图,它抓取多个表中的所有数据,我需要对它进行关键字搜索。我是我的SP,我加入了我的视图和关键字功能,可以搜索描述,名称,项目,产品。这里的问题是,如果items具有null值或者产品具有null值,则它不会返回行。即使item或products为null,我也需要显示结果。我尝试使用left outer join,它显示所有行与我的搜索关键字无关。我尝试了不同的方法,如使用where子句项为null,产品为空,没有运气。我需要一些专家建议来处理这个问题。

   ALTER PROCEDURE [dbo].[keywordsearch]
   (
     @username varchar(256),
     @keyword varchar(250)

    )

   AS

   BEGIN

    select * from allrecordsview k join dbo.Split(@Keyword, ',')T on  
    k.description+k.Name+k.items +k.products like '%' + T.items + '%'  
    where k.username = @username 

   END

1 个答案:

答案 0 :(得分:0)

试试这个:

SELECT * 
FROM   allrecordsview k 
       JOIN dbo.Split(@Keyword, ',') T 
         ON ( COALESCE(k.description, '') 
              + COALESCE(k.name, '') + COALESCE(k.items, '') 
              + COALESCE(k.products, '') ) LIKE '%' + T.items + '%' 
WHERE  k.username = @username