解決SQL將varchar值轉換為數據類型為int的列時發生語法錯誤


今天遇到一個這樣的錯誤,具體的報錯情況如下

 

 

 

 

解決的方案如下。

 數據庫MSSQL在比較大小時,出錯提示:“將 varchar 值 '24.5' 轉換為數據類型為 int 的列時發生語法錯!”分析數據庫設計列時的類型為VARCHAR,當搜索比較語句執行 “select * from datalist where price>10 order by id ”時即報告以上錯誤。
   琢磨下,只要price列里含有小數,就出錯,而price為varchar類型,必須轉換為數字類型。

 

  可以這樣改寫:“select * from datalist where convert(int,convert(numeric(18,9),price))>10 order by id ”

 

   或者也可以這樣寫:“select * from datalist where convert(int,cast(price as float))>10 order by id ”可以解決問題。

 

   即先把varchar的類型轉換為數字,然后再轉為int即可。

 

   另外一個思路:在數據錄入的時候,就判斷是否是整數,並且強制轉換如,int(price),也同樣可以避免日后 SQL 比較時,轉換出錯。

 

   附錄,問題類型同上:

 

   sql 將 varchar 值轉換為數據類型為 int 的列時發生語法錯誤的解決辦法;

 

group表有個varchar 的字段groupPower,值為1,2,3,4,有個sql語句為
select * from dbo.function where
functionId in
(
select groupPower from dbo.group
where groupid=1
)
執行出錯將 varchar 值 '1,2,3,4' 轉換為數據類型為 int 的列時發生語法錯誤。

 

   解決方法:
將where 條件改為:
where charindex(rtrim(functionId), (select top 1 groupPower from loan_group where groupid=1 ))>0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM