我正在嘗試從“客戶”表中的“電話”列轉換電話號碼。我嘗試了以下語法,但仍然收到錯誤訊息 -
1. SELECT CAST(phone as int)
FROM Clients
錯誤:將 nvarchar 值“030-3456789”轉換為資料型別 int 時轉換失敗
2. SELECT CONVERT(int, phone)
FROM Clients
將 nvarchar 值“030-3456789”轉換為資料型別 int 時轉換失敗。
3. SELECT CAST(phone AS BIGINT)
FROM Clients
WHERE ISNUMERIC(phone) = 1
查詢不回傳錯誤但沒有結果,該列為空。
uj5u.com熱心網友回復:
它看起來(從您的示例語法)就像您可能正在使用 SQL Server。
如果是這種情況并且是 2017 ,您可以執行以下操作來處理非數字值的任何組合。
根據您的評論,以下應該有效
select Try_Convert(bigint, Replace(Translate('(5) 789-0123','()-',' '),' ',''))
結果:57890123
如果您使用的是 SQL Server 2016 或更早版本,則必須嵌套多個替換:
select Try_Convert(bigint, Replace(Replace(Replace(Replace('(5) 789-0123)','-',''),'(',''),')',''),' ',''))
uj5u.com熱心網友回復:
因為默認情況下,至少您的某些記錄不能轉換為數字,如所示的030-3456789 您基本上需要替換/消除中間的破折號:
SELECT cast(replace('12-3', '-', '') as int)
不管怎樣,歡迎來到 StackOverflow。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/435481.html
下一篇:獲取大于1的相同狀態的記錄
