C# 将数据类型varchar转换为bigint时出错
我正在从列表框中检索值,并将它们格式化为字符串C# 将数据类型varchar转换为bigint时出错,c#,asp.net,sql,sql-server,C#,Asp.net,Sql,Sql Server,我正在从列表框中检索值,并将它们格式化为字符串 if (lbRaisedByLogin.SelectedIndex != -1) { foreach (ListItem item in lbRaisedByLogin.Items) { if (item.Selected == true) { sb.AppendFormat("{0},", item.Value);
if (lbRaisedByLogin.SelectedIndex != -1)
{
foreach (ListItem item in lbRaisedByLogin.Items)
{
if (item.Selected == true)
{
sb.AppendFormat("{0},", item.Value);
}
}
searchCase.raisedByLogin = sb.ToString().TrimEnd(Convert.ToChar(","));
sb.Length = 0;
}
我将这些字符串作为参数传递给存储过程(数据类型--Varchar(Max))
在存储过程中,我比较这些值,如
SELECT * FROM AUS_CID_Cases
WHERE
AddedBy IN ( @raisedByLogin )
其中@raisedByLogin是我传递的参数之一。它的值类似于@raisedByLogin=“4,2,1”
AddedBy具有数据类型bigint
当我运行代码时,我得到的错误是“将数据类型varchar转换为bigint时出错”。。我理解这是因为AddedBy列具有数据类型bigint。我无法更改该数据类型
然而,当我投下AddedBy时
SELECT * FROM AUS_CID_Cases
WHERE
CAST(AddedBy as VARCHAR) IN ( @raisedByLogin )
我没有得到错误,但没有选择任何内容,即我没有从select语句中得到任何结果
我能做什么?尝试在存储过程中构建SQL select查询,然后执行
DECLARE @raisedByLogin varchar(600)
SET @SQL =
'SELECT * FROM AUS_CID_Cases
WHERE
AddedBy IN (' + @raisedByLogin + ')'
EXEC(@SQL)
检查更多信息尝试在存储过程中构建SQL select查询,然后执行
DECLARE @raisedByLogin varchar(600)
SET @SQL =
'SELECT * FROM AUS_CID_Cases
WHERE
AddedBy IN (' + @raisedByLogin + ')'
EXEC(@SQL)
查看更多信息首先创建此视图
CREATE FUNCTION [dbo].[Split](@String varchar(8000), @Delimiter char(1))
returns @temptable TABLE (items varchar(8000))
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(@Delimiter,@String)
if @idx!=0
set @slice = left(@String,@idx - 1)
else
set @slice = @String
if(len(@slice)>0)
insert into @temptable(Items) values(@slice)
set @String = right(@String,len(@String) - @idx)
if len(@String) = 0 break
end
return
找到上述函数,并设法解决了此问题…请先创建此视图
CREATE FUNCTION [dbo].[Split](@String varchar(8000), @Delimiter char(1))
returns @temptable TABLE (items varchar(8000))
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(@Delimiter,@String)
if @idx!=0
set @slice = left(@String,@idx - 1)
else
set @slice = @String
if(len(@slice)>0)
insert into @temptable(Items) values(@slice)
set @String = right(@String,len(@String) - @idx)
if len(@String) = 0 break
end
return
找到了上面的函数,并设法解决了这个问题