日期:2014-05-18  浏览次数:20591 次

关于自定义函数使用列参数的问题(高手请进)
我有一个表   table1(产品)   其中有一个列   color   ,   由于颜色有多种可能出现   如红+黑+白     这样的情况。   标准颜色的组合中间用+间隔。

另外有一个表table2   保存有标准的颜色,只有一列   Standcolor   保存有所有的标准颜色。

我现在想找出所有的包含有红色的产品   ,不能使用like   '%红% '   这种情况,因为我不希望出现粉红等的颜色。


所以我建一个函数,先把颜色根据标准分开如  
  F_split(@s   varchar(100))
      return   table   (color   varchar(10))
    ........


问题是我使用的时候不知道怎样写这条语句

如:   select   *   from   table1   where   exists   (select   *   from   F_split(table1.color)     where   color   = '红 '   )

这种语句都出错,不知应该怎么写或者有更好的方法。




------解决方案--------------------
沒有必要使用那個函數,可以直接用一句SQL來實現。

--方法一:
Select * From table1 Where CharIndex(N '+红+ ', '+ ' + color + '+ ') > 0
--方法二:
Select * From table1 Where '+ ' + color + '+ ' Like N '%+红+% '