正在从sql查询和存储过程中删除“”
我有一个表,其中名为data的列是varbinary类型的。如果我做一个简单的查询 从data=1的选项卡中选择*from,则它可以工作,但如果我从data=1的选项卡中选择*from,则它不会返回任何行。当我创建一个存储过程来从此表检索数据时,会出现问题,它会在查询时转换查询并在参数中添加“”,因此我无法检索任何数据。谁能告诉我如何回避这个问题吗正在从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
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的调用。。。