8114: Error converting data type X to Y(将数据类型 X 转换为 Y 时出错)
SQL Server含义
由于类型不兼容,值无法从一种数据类型转换为另一种。与错误 245 不同,这通常是参数/表达式层面的类型转换失败(例如 varchar 转 numeric)。
原因
向数值列/参数发送了非数字或格式错误的文本;小数位数/精度溢出;试图将空字符串('')转换为数值;或在参数化查询中传入了类型错误的参数。在 ORM 生成的隐式转换中很常见。
解决方法
确认被转换的值符合目标类型。使用 TRY_CONVERT / TRY_CAST 进行安全转换;它们在失败时返回 NULL,因此可以用 WHERE 过滤这些行。使参数类型与列类型一致。用 ISNUMERIC/TRY_CAST 扫描数据以找出问题行,并清理空字符串。
同一数据库的其他条目
- 40544The database has reached its size quota (Azure SQL)(数据库已达到大小配额)
- 40613Database is not currently available (Azure SQL)(数据库当前不可用)
- 102Incorrect syntax near 'token'('token' 附近有语法错误)
- 1204The instance of the SQL Server Database Engine cannot obtain a LOCK resource(SQL Server 数据库引擎实例无法获取 LOCK 资源)
- 3906Failed to update database because the database is read-only(无法更新数据库,因为数据库为只读)
- 15023User already exists in the current database(用户在当前数据库中已存在)
- 18452Login failed. The login is from an untrusted domain and cannot be used with Windows authentication(登录失败。该登录名来自不受信任的域,不能用于 Windows 身份验证)