当前位置: 首页 > 面试题库 >

将varchar值'%'转换为数据类型int时转换失败

高琛
2023-03-14
问题内容

我创建了一个过程并收到了此消息

将varchar值’%’转换为数据类型int时,转换失败。

create procedure consultarEquipo (@id varchar(10), @marca varchar(20),
@year int, @factura varchar(50), @poliza varchar(30))
as begin

select * from C_EQUIPOS
where (ID_EQUIPO like '%'+@id+'%' and
MARCA like '%'+@marca+'%' and
YEAR like '%'+@year+'%' and
FACTURA like '%'+@factura+'%' and
SEGURO like '%'+@poliza+'%')

end
go

我不知道这可能是什么,但是当我将过程更改为这样时:

create procedure consultarEquipo (@id varchar(10), @marca varchar(20))
as begin

select * from C_EQUIPOS
where (ID_EQUIPO like '%'+@id+'%' and
MARCA like '%'+@marca+'%')

end
go

似乎工作正常。我是SQL的新手,所以可以得到任何帮助,也许有更好的方法来做我想做的事情?


问题答案:

这是在where子句中:

YEAR like '%'+@year+'%' and

@year是一个整数。因此,您需要将其转换为字符串:

YEAR like '%'+ cast(@year as varchar(255)) + '%' and

为什么要使用like称为的列YEAR是可疑的。也许您只想要:

(YEAR = @year or @year IS NULL) and


 类似资料:
  • 问题内容: 尝试运行SQL查询时出现此错误… 将varchar值’Id’转换为数据类型int时转换失败 请帮我 :( 问题答案: 在您的情况下,请确保一列是类型,另一列是类型。 由于优先级高于,因此列将隐式转换为 因此,将列明确转换为varchar。 我已经考虑了如果不是的类型,然后转换为

  • 问题内容: 我在代码隐藏中收到转换失败的错误。我的代码如下: 我收到以下错误: 将nvarchar值转换为数据类型int时,转换失败。 在这里必须进行哪些更改? 问题答案: 我想这是一个整数,但您正在分配一个字符串。因此,这可能会解决它: 编辑:由于您已评论该会话存储了用户名,但该列是一个int列,因此您有三个选择: 更改会话以存储用户标识而不是名称 更改列以存储用户名 从存储用户名的表中选择用户

  • 问题内容: 我尝试搜索与此相关的以前的文章,但是找不到适合我情况的文章。而且由于我是StackOverflow的新手,所以我无法发布图片,所以我将尝试对其进行描述。 我有两个数据集。一个是34行,占所有s的1列。其他13行,其中1列为s。 当我同时尝试这两个时,出现以下错误: 将varchar值转换为int数据类型时,转换失败。 我不明白为什么会收到此错误。我之前编辑过许多列和许多其他类型的列,但

  • 问题内容: 我正在尝试使用存储过程基于varchar类型的“名称”列的输入值来返回“项目”表的“ ItemId”列值,但是每当我将任何值传递给存储过程时,它都会向我返回错误: 将数据类型varchar转换为int时出错。 这就是我所说的: 问题答案: 您必须匹配参数:RETURN不会填充OUTPUT参数:您对@itemid的赋值可以做到这一点。 另外,您存储的过程太复杂了。对于从存储的proc返回

  • 问题内容: 我在下面的查询中,需要转换为 架构图 我尝试了什么 但它们不起作用。请提出建议。 问题答案: 您将需要或作为数据类型,没有可以将数据强制转换/转换为以下数据的数据类型: 请参阅下面的SQL(实际上)在SQL Fiddle中 : 除了您试图转换为不正确的数据类型外,您所使用的语法也不正确。该函数使用以下列或值: 要么 您的原始查询的语法向后。