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

提取字符串左侧4位年份时遇类型转换错误,求解决方案

问题解决方法

报错根源

你写的LEFT(4, [DESCRIPTION])参数顺序搞反了。SQL的LEFT函数语法是LEFT(待截取字符串, 截取长度),你把长度放前面、字符串放后面,数据库会误以为要把[DESCRIPTION]这个字符串转换成数值类型作为截取长度,所以触发了转换错误。

直接解决办法

修正LEFT函数的参数顺序,直接提取前4位字符串:

LEFT([DESCRIPTION], 4) AS ModelYear

这样得到的结果是varchar类型的年份(比如'2015'),完全符合你不需要转成Int的需求,也不会触发转换错误。

额外建议(如果后续需要数值类型)

如果之后需要把年份转成数值类型,为了避免遇到非数字开头的字符串时报错,可以用TRY_CAST或TRY_CONVERT做安全转换:

TRY_CAST(LEFT([DESCRIPTION], 4) AS INT) AS ModelYear

转换失败时会返回NULL,不会中断查询。

关于关闭隐式转换

不建议关闭数据库的隐式转换,这会影响整个数据库的其他正常操作,而且你的问题本质是函数参数顺序错误,和隐式转换无关,修正参数即可解决问题。

内容的提问来源于stack exchange,提问作者craig.white

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 23:32:31