2
更新表中設置測試=轉換(VARCHAR(53),CAST(PHONE_NUMBER爲十進制))誤差變換數據類型爲varchar到數字
更新表中設置測試=轉換(VARCHAR(53),CAST(PHONE_NUMBER爲十進制))誤差變換數據類型爲varchar到數字
如果PHONE_NUMBER有任何字母或符號字符它澆鑄於DECIMAL時它將會失敗:
Update table set Test = Convert(varchar(53), Cast(Phone_Number as Decimal))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
你的問題很模糊,但你可以嘗試:
Update YourTable
SET Test=CASE
WHEN ISNUMERIC(Phone_Number)=1 THEN Convert(varchar(53), Cast(Phone_Number as Decimal)) --this is your code unchanged
ELSE Phone_Number
END
...
如果UPDATE是針對表中的每一行(示例代碼沒有WHERE),那麼如果只有一個'Phone_Number'具有不良字符,則整個UPDATE將失敗。運行'SELECT * FROM YourTable WHERE ISNUMERIC(Phone_Number)= 0'來查找所有「壞」行。 – 2010-03-23 17:25:48
哪些數據類型是測試和PHONE_NUMBER嗎? – CResults 2010-03-23 17:14:36
兩者都是Varchar(53) – shoakat 2010-03-23 17:17:47