在将字符串值传递给整数列时,出现了错误的子句。

28 浏览
0 Comments

在将字符串值传递给整数列时,出现了错误的子句。

我有一个查询如下:

select * from table1 where id in (select ids from table2 where id = 100)

子查询单独运行时,返回的结果是34、35、55、66。但是我的上述查询报错:

将varchar值'34,35,55,56'转换为整型数据类型时转换失败。

table1中的id列是整型。我知道可以通过两个单独的查询来解决,但如果有办法在单个查询中解决,请告诉我。

提前感谢您的帮助。

0
0 Comments

问题原因:在将字符串值传递给整数列时,使用了IN子句,导致出现错误。

解决方法:根据给出的代码示例,可以使用以下方法解决该问题。

在MySQL中,可以使用以下查询语句来实现:

select distinct id from table1 join table2 on find_in_set(id,ids)

在SQL Server中,由于其字符串功能较为有限,可以使用以下查询语句来实现:

select distinct id from table1 join table2 
  on patindex('%,'+cast(id as varchar)+',%',ids)>0 or
  patindex(cast(id as varchar)+',%',ids)>0 or
  patindex('%,'+cast(id as varchar),ids)>0 or
  patindex(cast(id as varchar),ids)>0

此外,也可以使用`msdn.microsoft.com/en-us/library/ms188395.aspx`代替`find_in_set`函数。

以上是根据提供的内容整理出的关于"In clause giving error while passing string values to integer column"问题的原因和解决方法。

0