我有一个简单的 sql 表,它有两列 Name 和 IDs 都是 varchar(10);现在我在表中有值('Test','1,2,3')。我们有另一个表来获取 employee 的完整详细信息,但是 tblEmployee 中的 IDs 列是 int。下面的 SQL 会报错,
Select * from tblEmployee where Ids in (Select Ids from tblNameId where name='Test');
错误是无法将 1,2,3 转换为 int。他们是将所有值转换为 int 或任何其他解决方法的方法。
谢谢。
最佳答案
使用下面的函数拆分文本
CREATE FUNCTION dbo.Split(@String varchar(8000))
returns @temptable TABLE (items int)
as
begin
declare @idx int
declare @slice varchar(8000)
select @idx = 1
if len(@String)<1 or @String is null return
while @idx!= 0
begin
set @idx = charindex(',',@String)
if @idx!=0
set @slice = left(@String,@idx - 1)
else
set @slice = @String
if(len(@slice)>0)
insert into @temptable(Items) values(CONVERT(INT, @slice))
set @String = right(@String,len(@String) - @idx)
if len(@String) = 0 break
end
return
end
然后
Select * from tblEmployee where Ids in dbo.Split(Select Ids from tblNameId where name='Test');
关于asp.net - 将 varchar 转换为 int SQl server 2005,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5880215/