2012-07-30 50 views
0

我有一个表样本数据的列如下:表值函数

ServiceTypeIds 
7,1 
1,9 
1 
9 
4 
7 
7 

在我的Where子句我使用以下方法来搜索就可以了:

WHERE(@ServiceTypes IS NULL OR CHARINDEX(','+CAST(SEP.ServiceTypeIDs as VARCHAR(255))+',', ','[email protected]+',') > 0))) 

如果我PARAM @ ServieTypes等于'1,9',那么我会得到结果,但是当它的@ServiceTypes ='1'或'9'时,我不会收到任何回应。表格设计很差,但我没有足够的时间来创建新表格并修改c#代码。我试图使用表值函数,但由于ServiceTypeIds不是主键列,它没有工作。任何人都可以帮忙吗?

+0

你可能有一些空间,请尝试使用'LIKE' – bjan 2012-07-30 04:04:24

+0

检索结果有列没有空格,也没有空格在参数中 – 2012-07-30 04:06:26

+0

更改CHARINDEX中参数的位置。 'CHARINDEX(','+ @ ServiceTypes +',',','+ CAST(SEP.ServiceTypeIDs as VARCHAR(255))+',')'[CHARINDEX](http://msdn.microsoft.com/zh-cn/ us/library/ms186323.aspx) – bjan 2012-07-30 04:22:18

回答

0

只要修改参数的位置为CHARINDEX即把','[email protected]+','作为第一个参数等作为第二

+0

谢谢你的帮助, – 2012-07-30 05:40:17