我試圖將下列內容轉換爲整數,以便我可以執行計算,從123.456.789
到123456789
。將SQL Server中的varchar強制轉換爲INT
然而,當我嘗試
CAST([Total number] AS INT)
OR
CONVERT(int, [Total number])
然後我得到一個錯誤的轉換VARCHAR值 '123.456.789' 數據類型時
轉換失敗INT。
我試圖將下列內容轉換爲整數,以便我可以執行計算,從123.456.789
到123456789
。將SQL Server中的varchar強制轉換爲INT
然而,當我嘗試
CAST([Total number] AS INT)
OR
CONVERT(int, [Total number])
然後我得到一個錯誤的轉換VARCHAR值 '123.456.789' 數據類型時
轉換失敗INT。
假設點是不是一個小數分頻器和你的電話號碼是整數(不浮動/十進制) - 你可以從你的字符串轉換像之前刪除點:
CAST(replace([Total number], '.', '') AS int)
Declare @val varchar(100)='123.456.789'
SELECT CAST (REPLACE (@val,'.','') AS INT) As Intval
但是現在您只聲明瞭1個值,在我的示例中爲1。你會如何做到這一點多列或多個值?最好使用UPDATE和SET NO? – Probs
您可以使用try_convert或try_cast即使有任何特殊字符,它會在這種情況下
Select try_convert(int, replace([Total number], '.', ''))
不錯的一個!謝謝Kannan :) – Probs
返回null這是你的要求如下
Declare @val TABLE (ID INT IDENTITY,Val varchar(100))
INSERT INTO @val
SELECT '356.345.789' UNION ALL
SELECT '123.456.333' UNION ALL
SELECT '444.124.444' UNION ALL
SELECT '347.456.555' UNION ALL
SELECT '123.666.789' UNION ALL
SELECT '678.432.789' UNION ALL
SELECT '789.456.111' UNION ALL
SELECT '123.457.123' UNION ALL
SELECT '333.111.789'
SELECT ROW_NUMBER()OVER(Order by (SELECT 1)) AS Rno,
CAST(REPLACE (Val,'.','') AS INT) As Intval
FROM @val
你需要這樣123456789 –
這正是正確 – Probs
添加'WHERE替換([總數], '', '')NOT LIKE '%[^ 0-9]%' '以確保只有整數被轉換。 – jarlh