ALTER PROCEDURE STeachingTeamInfo

(
@T_Id nvarchar(10),
@T_Level nvarchar(10),
@T_Time nvarchar(10),
@T_TeamName nvarchar(20),
@T_Gradation nvarchar(6),
@T_FileNum nvarchar(20),
@joinTime nvarchar(10)
)

AS
begin
SET NOCOUNT ON;
DECLARE @sql nvarchar(max)
SET @sql='SELECT T_Id,T_Level,T_Time,T_TeamName,T_Gradation,T_FileNum,joinTime FROM sr_TeachingTeam
where 1=1'
IF(@T_Id <>'0')
SET @sql = @sql+ N' and T_Id=('+@T_Id+N') '
IF(@T_Level <>'0')
SET @sql = @sql+ N' and T_Level='''+@T_Level+N''' '
IF(@T_Time <>'0')
SET @sql = @sql+ N' and T_Time between'''+@T_Time+N''' '
IF(@T_TeamName <>'0')
SET @sql = @sql+ N' and T_TeamName='''+@T_TeamName+N''' '
IF(@T_Gradation <>'0')
SET @sql = @sql+ N' and T_Gradation='''+@T_Gradation+N''' '
IF(@T_FileNum <>'0')
SET @sql = @sql+ N' and T_FileNumber='''+@T_FileNum+N''' '
EXEC sp_executesql @sql
end
这个地方SET @sql = @sql+ N' and T_Time between'''+@T_Time+N''' '我要实现的效果是 T_Time between 2009 and 2010 这样的效果
在输入@T_Time的时候 这个参数的格式怎么写啊 小弟写了半天 总是说字符串不正确
请问大家 这个在传入参数时候的格式该怎么写 ''的问题 总是匹配不好 太烦了~~~

解决方案 »

  1.   

    SET @sql = @sql+ N' and T_Time between '''+@T_Time+N''' '
    between后面少一个空格?
      

  2.   

    不是 我的意思 是@T_Time的格式应该怎么写
      

  3.   

    这样的话,它的长度10是不够的,试试以下格式
    declare @T_Time nvarchar(30)
    set @t_time='2011-06-01 and ''2011-06-06'
    select N' and T_Time between '''+@T_Time+N''' '/**-----------------------------------------------------
     and T_Time between '2011-06-01 and '2011-06-06' (1 行受影响)
    **/
      

  4.   

    十分感谢,还有一个问题就是 在用字符串拼接SQL语句的时候 我总是 '' 匹配有问题 请问有什么技巧匹配''的方法么?
      

  5.   


    可以print出来看看一般的情况下需要转义,两引号代表1个引号