2015-05-22 142 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將返回多少個字符,正值第二位。

相關問題