数据库nvarchar值转换成int失败怎么解决?

数据库nvarchar值转换成int失败怎么解决?
代码是这样的:

img

这个是varchar?那你得先转number,再判断是否大于60

img

varchar不能和int直接比较大小啊
需要调用函数去转换

在 SQL 中,nvarchar 值必须转换为 int 值时需要先使用 CAST 或 CONVERT 函数进行类型转换。如果转换失败,可能是因为 nvarchar 值包含非数字字符或存在空值,此时可以使用 ISNULL 函数将空值替换为 0,或使用 TRY_CONVERT 函数进行安全转换,如果转换失败则返回 NULL。

以下是使用 CAST 函数进行类型转换的示例:

SELECT student.stuadentno, student.sname, SUM(CAST(score.period AS int)/16)
FROM student 
INNER JOIN score ON student.stuadentno=score.studentno 
INNER JOIN course ON course.courseno=score.courseno 
WHERE score.final>60 
GROUP BY student.stuadentno, student.sname


以下是使用 TRY_CONVERT 函数进行安全转换的示例:

SELECT student.stuadentno, student.sname, SUM(TRY_CONVERT(int, score.period)/16)
FROM student 
INNER JOIN score ON student.stuadentno=score.studentno 
INNER JOIN course ON course.courseno=score.courseno 
WHERE score.final>60 
GROUP BY student.stuadentno, student.sname


1、根据你的报错,应该是 period 字段或 final 字段(类型为 nvarchar)中的值中,有一个包含 “60
      ”(60后接回车/换行或很多空格),你需要找出这条数据,将60后面的非数字字符全部删除掉