我写了个储存过程CREATE proc sProduct@BeginDate datetime,
@EndDate datetime,
@fItemTypeNumber varchar(250)在这执行的时候 我用了一个 Where In 语句and substring(Number,1,2) In (@fItemTypeNumber)Number 字段的值 是 01.0001 02.0001 03.0001
这样的 所以我用 substring 只过滤 02 @fItemTypeNumber 传递过来的值是 01,02 但是搜索不出来我直接写入数值可以查询出来
and substring(Number,1,2) In ('01','02')网上有说 and substring(Number,1,2) In ('+@fItemTypeNumber+') 这样 我试了 也不行请问 应该怎么弄啊?
@EndDate datetime,
@fItemTypeNumber varchar(250)在这执行的时候 我用了一个 Where In 语句and substring(Number,1,2) In (@fItemTypeNumber)Number 字段的值 是 01.0001 02.0001 03.0001
这样的 所以我用 substring 只过滤 02 @fItemTypeNumber 传递过来的值是 01,02 但是搜索不出来我直接写入数值可以查询出来
and substring(Number,1,2) In ('01','02')网上有说 and substring(Number,1,2) In ('+@fItemTypeNumber+') 这样 我试了 也不行请问 应该怎么弄啊?
create function [dbo].[f_SplitToNvarchar]
(
@SourceSql nvarchar(max),--源分隔字符串
@StrSeprate varchar(10)--分隔符
)
returns @temp table(a nvarchar(max))
as
begin
declare @i int
set @SourceSql=rtrim(ltrim(@SourceSql))
set @i=charindex(@StrSeprate,@SourceSql)
while @i>=1
begin
insert @temp values(left(@SourceSql,@i-1))
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
set @i=charindex(@StrSeprate,@SourceSql)
end
if @SourceSql<>'\'
insert @temp values(@SourceSql)
return
end2.然后
and substring(Number,1,2) In (select * from f_SplitToNvarchar(@fItemTypeNumber,','))
可这样实现
@fItemTypeNumber='01,02' ','+@fItemTypeNumber+',' like ',%'+substring(Number,1,2)+',%'