将nvarchar值'aaa'转换为数据类型int时转换失败

时间:2012-11-22 16:06:20

标签: asp.net sql sql-server sql-server-2008

当我尝试从文本框中通过SqlDataSource输出到gridview进行简单搜索时,我在标题中收到错误。如果我搜索 123 ,它将返回ID为123的记录。如果我搜索 aaa ,则返回错误。任何人都知道为什么???数据库看起来像这样:

id       int           (primary key / identity)
struser  nvarchar(50)

SQL语句如下所示:

SELECT id, struser 
FROM ticket 
WHERE (id = @id) OR (struser = @struser)

3 个答案:

答案 0 :(得分:1)

您可以使用案例陈述,下面假设您没有-1的ID值:

SELECT id, struser FROM ticket WHERE (id = CASE ISNUMERIC(@id) WHEN 1 THEN CONVERT(int,@id) ELSE -1 END) OR (struser = @struser)

答案 1 :(得分:0)

尝试将其投放到varchar,但我认为它将不再使用索引。

WHERE (CAST(id AS VARCHAR(20)) = @id)

答案 2 :(得分:0)

尝试

SELECT id, struser 
FROM ticket 
WHERE (CONVERT(VARCHAR,id) = @id ) OR (struser = @struser)