decimal數據類型似乎很好地工作:
DECLARE @myVarchar AS VARCHAR(32)
SET @myVarchar = '1000550152872026'
DECLARE @myDecimal AS DECIMAL(38,0)
SET @myDecimal = CAST(@myVarchar AS DECIMAL(38,0))
SELECT @myDecimal + 1
而且,這裏有一個簡單的例子,其中IsNumeric
回報1
但轉換爲十進制失敗:
DECLARE @myVarchar AS VARCHAR(32)
SET @myVarchar = '1000550152872026E10'
SELECT ISNUMERIC(@myVarchar)
DECLARE @myDecimal AS DECIMAL(38,0)
SET @myDecimal = CAST(@myVarchar AS DECIMAL(38,0)) --This statement will fail
編輯
你可以嘗試CONVERT
浮動如果你正在處理用科學計數法寫的值:
DECLARE @Orders AS TABLE(OrderNum NVARCHAR(64), [Date] DATETIME)
INSERT INTO @Orders VALUES('100055015287202', GETDATE())
INSERT INTO @Orders VALUES('100055015287203', GETDATE())
INSERT INTO @Orders VALUES('1.00055015287E+15', GETDATE()) --sci notation
SELECT
CONVERT(FLOAT, OrderNum, 2) +
CAST(REPLACE(CONVERT(VARCHAR(10), GETDATE(), 120), '-', '') AS FLOAT)
FROM @Orders
這個查詢是否返回任何內容:'SELECT * FROM Orders WHERE ord_no LIKE'%[^ 0-9]%''? – 2011-06-07 04:47:34
@Andriy M哇! 3k行! – CodingIsAwesome 2011-06-07 05:07:52