Tsql 转换nvarchar值时T-SQL转换失败';12-02和#x27;到数据类型int

Tsql 转换nvarchar值时T-SQL转换失败';12-02和#x27;到数据类型int,tsql,Tsql,我正在尝试将这个NVARCHAR值转换为periodeId。 原始数据可能是“12-02” 我的解决方案是首先尝试这个 (1000+CONVERT(INT,LEFT(2,T1.PERIOD_NAME)))*100+CONVERT(Int,RIGHT(2,t1.PERIOD_NAME)) 但是我在这里得到了同样的错误信息,并且可以找到任何快速的解决方案 我也试着做一个简单的 LEFT(2,T1.PERIOD\u NAME)查看是否是公式本身使其崩溃,但出现了相同的错误。如果希望'12-02'为1

我正在尝试将这个NVARCHAR值转换为periodeId。 原始数据可能是“12-02”

我的解决方案是首先尝试这个

(1000+CONVERT(INT,LEFT(2,T1.PERIOD_NAME)))*100+CONVERT(Int,RIGHT(2,t1.PERIOD_NAME))
但是我在这里得到了同样的错误信息,并且可以找到任何快速的解决方案

我也试着做一个简单的


LEFT(2,T1.PERIOD\u NAME)
查看是否是公式本身使其崩溃,但出现了相同的错误。

如果希望
'12-02'
为1202,请在转换之前使用
替换()
删除连字符:

select cast(replace(period_name, '-', '') as int)
在SQL Server 2012+中,您应该使用
try\u convert()
,以防出现其他意外值。

您可以尝试:

SELECT (1000+CONVERT(INT,LEFT(t1.PERIOD_NAME,2)))*100+CONVERT(Int,RIGHT(t1.PERIOD_NAME,2))

操作的字符\表达式位于第一位,而整数表达式指定返回字符\表达式的字符数,排在第二位。

'12-02'
等价的整数是什么?也许错误在别处-为什么不编辑您的问题以包含整个查询?您的表中有类似于'12-2'的数据…真的剩下了(2,T1.句点名称)有相同的错误?