我正在使用SQL Server 2005.如何從SQL查詢中的NVARCHAR列中選擇整數值?
我試圖獲得值爲fk_unitserial
是整數。該列被定義爲nvarchar(255), not null
。
我認爲我在此列中選擇數值,並確定這些值使用下面的查詢是在一個特定的範圍:
select t.pkid, t.fk_unitserial
from (
select r.pkid, r.fk_unitserial
from tbl_ovenresults r
where isnumeric(r.fk_unitserial + '.0e0') = 1
) t
where convert(decimal(38, 0), t.fk_unitserial) between -2147483648 and 2147483647
order by t.pkid
但運行它給我的留言:
Msg 8114, Level 16, State 5, Line 1
Error converting data type nvarchar to numeric.
它看起來像違規值是129896545820
,但運行
select convert(decimal(38, 0), 129896545820)
按預期工作。
我錯過了什麼?
編輯
我想我要問的,也許,是如果ISNUMERIC
以往任何時候都不能在CONVERT(DECIMAL(38, 0), value)
一起使用的值返回1
。
違規值肯定不是129896545820,因爲我使用nvarchar列類型創建了示例表,並且提到的值和查詢運行正常。數字值之間必須有一些字符或空格。 – Sonam
@Sonam - 對於使用我的'CONVERT'方法無法轉換的值,ISNUMERIC'會返回'1'嗎? – ken
我不這麼認爲,Isnumeric肯定會返回0,因爲在上述條件下不能轉換的值。 – Sonam