正在从sql查询和存储过程中删除“”

正在从sql查询和存储过程中删除“”,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个表,其中名为data的列是varbinary类型的。如果我做一个简单的查询 从data=1的选项卡中选择*from,则它可以工作,但如果我从data=1的选项卡中选择*from,则它不会返回任何行。当我创建一个存储过程来从此表检索数据时,会出现问题,它会在查询时转换查询并在参数中添加“”,因此我无法检索任何数据。谁能告诉我如何回避这个问题吗 Parameters @ID INT = NULL ,@Data varchar(100) = NULL CREATE TAB

我有一个表,其中名为data的列是varbinary类型的。如果我做一个简单的查询

从data=1的选项卡中选择*from,则它可以工作,但如果我从data=1的选项卡中选择*from,则它不会返回任何行。当我创建一个存储过程来从此表检索数据时,会出现问题,它会在查询时转换查询并在参数中添加“”,因此我无法检索任何数据。谁能告诉我如何回避这个问题吗

Parameters
 @ID   INT = NULL  
,@Data    varchar(100)  = NULL 

CREATE TABLE #Results (      
         ID     INT      
        ,Data varchar(100)  

      )  

BEGIN    
    INSERT #Results (
         ID 
        ,Data 

        )  
    SELECT 
               SK.ID              
              ,SK.Data  

    FROM    dbo.tab SK
    where SK.ID =  @ID And SK.data = @data 

 END  

  SELECT @TotalRows = COUNT(*)    
     FROM #Results 

 SELECT @TotalRows TotalRows 
现在从我执行此语句时的代码开始

  oReader = ExecuteReader(oConn, CommandType.StoredProcedure, "Proc", New SqlParameter("@ID", Request.ID), _
                                                                                              New SqlParameter("@Data", Request.Data)) 
我在SQL Profiler中看到它以“数据”的形式运行查询 它不返回任何行


谢谢

既然您说您已经编写了一个SP,我想input参数被指定为NVARCHAR或VARCHAR

下面是一种方法,但我猜在第一个解决方案中,名为data的列只包含整数值

DECLARE @X VARCHAR(5) 
SET @X = '1 '
SELECT CAST(@X AS INT)
仅当上面指定的数据列为整数时,才可以使用上面的值

如果相同的是string VARCHAR,则可以编写一个用户定义的函数来执行相同的操作

  CREATE FUNCTION dbo.TRIM(@string VARCHAR(8000))
  RETURNS VARCHAR(8000)
  BEGIN
     RETURN LTRIM(RTRIM(@string))
  END


 SELECT dbo.TRIM('1 ')
我希望上面的内容是有用的,我确实得到了这个想法,而不是从这里复制函数

修复存储过程。请提供您的查询!!“表”选项卡中数据字段的数据类型是什么?显示sp和对sp的调用。。。