2015-05-22 98 views
-2

我试图将此NVARCHAR值转换为periodeId。 原始数据可能是'12 -02'。将nvarchar值'12 -02'转换为数据类型int时,T-SQL转换失败

我对这个解决方案是第一个尝试这种

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

但我在这里得到了同样的错误消息,并且能找到它的任何快速的解决方案。

我也试过,只是做一个简单的

LEFT(2,T1.PERIOD_NAME),看它是否是公式本身坠毁,但同样的错误出现了。

+2

“12 -02”是什么意思? –

+1

也许错误是其他地方 - 为什么不编辑你的问题,包括整个查询? –

+0

您的表格中有像'12-2'这样的数据... –

回答

1

如果你想'12-02'是1202,然后用replace()转换之前删除连字符:

select cast(replace(period_name, '-', '') as int) 

在SQL Server 2012+,你应该使用try_convert(),万一有其他意外的值。

1

你可以试试:

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

一个character_expressionLEFT操作上在首位,而整数表达式,指定一个character_expression将返回多少个字符,正值第二位。

相关问题