You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按部门查询课程名称时提示text与nvarchar在等于运算符中不兼容的求助

报错诱因
  • 核心原因为数据类型不匹配:你所用的SQL Server数据库中,Course表的Department字段定义为已弃用的text类型,而你通过C#代码传入的@Department参数默认会被ADO.NET映射为nvarchar类型,SQL Server不支持text和nvarchar类型直接使用=运算符做等值判断,因此触发该报错。
  • 补充说明:text、ntext、image都是SQL Server的旧版大文本数据类型,后续版本会被正式移除,官方推荐使用nvarchar(max)、varchar(max)、varbinary(max)类替代。
解决方案

方案1(推荐):修改表字段类型

直接把Course表的Department字段类型从text改成nvarchar(适配业务的长度),如果部门名称长度不确定也可以用nvarchar(max),修改后原有代码无需调整即可正常运行,同时符合SQL Server开发规范,避免后续再出现同类类型兼容问题。
修改字段的SQL语句参考:

ALTER TABLE Course ALTER COLUMN Department NVARCHAR(200) NOT NULL; -- 长度、非空约束可根据实际业务调整

方案2:不修改表结构,调整查询语句

如果暂时没有权限修改表结构,可以在SQL查询中将text类型的字段转成nvarchar类型后再做比较,仅需要修改你的CommandText即可:
把原来的代码:

cmd.CommandText = " select Course_Name from Course Where Department = @Department";

修改为:

cmd.CommandText = "SELECT Course_Name FROM Course WHERE CAST(Department AS NVARCHAR(MAX)) = @Department";

修改后无需调整其他代码即可正常执行查询。

内容的提问来源于stack exchange,提问作者Noman Ullah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 22:48:01