1樓:匿名使用者
首先這個問題涉及到ado程式設計。
既然你使用了tadoquery控制元件。說明你應該對這方面有一些瞭解了。
下面我會和你說下除錯的方法和問題出現的原因以及解決方案。
1.除錯
當你在adoquery1.execsql;這句設定斷點,即滑鼠停留在該行,按下f5。
右擊選擇選單debug-evaluate/modify彈出對話方塊,在expression輸入adoquery1.sql.text按下回車
result將顯示該資料的內容。你將得到一條完整的資料庫操作語句。
複製該sql語句,到查詢分析器或者pl/sql中執行。將得到錯誤原因。
2. 原因
由於你的插入語句使用的是含有引號的值,根據標準sql語法,理解為字元陣列。而你資料庫中的表欄位是數字型別的。由於資料型別不相符。資料庫報錯。錯誤原因即你題目中寫到的。
3.解決方案
將sql語句修改一下,或者修改資料庫中的表欄位結構。(一般情況表結構不會輕易變動,除非是設計時不合理)
4.優化
關於sql的優化方案有很多型別。例如你題目中的寫法,執行時準確性可以保證,但是效率可以提高。比如將sql的拼寫使用繫結變數方式。
如果批量使用該語句時,可以多條一起提交。優化的原理是利用資料庫自帶的快取,提高效率。
另外,表在設計時竟可能不要使用中文。控制元件名稱多使用一些有意義的變數名。比如insertquery,date,account.
祝你在使用中得到更快的技術提升。同時**有很好的可讀性。
2樓:誠信是可靠的
樓上的2位回答明顯不靠譜,你插入的最後一個值,對應的列是否數值型的。在插入數值型的列的時候,如果沒有值,要麼插入0,要麼插入null值,插入''就會出現從資料型別 varchar 轉換為 numeric 時出錯。你其他的列都應該沒問題,如果數值的長度夠...
從資料型別 varchar 轉換為 numeric 時出錯.怎麼解決
3樓:秋殤di冬寒
cast(a.num as numeric(18, 5))/cast(b.cknum as numeric(18, 5) 這個得到的是數值型別,而你前面兩個得到的是字元型別,我認為只要把這個直接轉字元就可以了:
to_char(a.num/b.cknum, $99999.99)
從資料型別 varchar 轉換為 numeric 時出錯 10
4樓:海天盛
一、有null值;
二、有「」值;
isnumeric確定表示式是否是有效的數字型別。以下值在sql函式isnumeric()中沒有找到:
1.有「-」值;
2.財務上用的逗號,有「,」值
把以上轉為0,就可以了。
其他:轉小數值一般不要超過5位
5樓:大野瘦子
一、有null值;
二、有「」值;
isnumeric確定表示式是否為一個有效的數字型別。下面這幾個值,用sql函式isnumeric()用查不出來錯誤:
1、有「-」值;
2、財務上用的逗號,有「,」值
把以上轉為0,就可以了。
其他:轉小數值一般不要超過5位
6樓:那時花開應自在
cast(a.num as numeric(18, 5))/cast(b.cknum as numeric(18, 5) 這個得到的是數值型別,而你前面兩個得到的是字元型別,我認為只要把這個直接轉字元就可以了:
to_char(a.num/b.cknum, $99999.99)
7樓:匿名使用者
一個小建議,轉換前用isnumeric()函式試一下,就可以保證不出錯了,
case when isnumeric(123) = 1 then cast(.. as int) else null end
從資料型別varchar轉換為numeric時出錯 怎麼解決
8樓:匿名使用者
cast(a.num as numeric(18, 5))/cast(b.cknum as numeric(18, 5) 這個得到的是數值型別,而你前面兩個得到的是字元型別,我認為只要把這個直接轉字元就可以了:
to_char(a.num/b.cknum, $99999.99)
sql 從資料型別 varchar 轉換為 numeric 時出錯.
9樓:靈魂心心相印
你在設計裡,檢視下,是num的格式的,後面select跟的 num格式空著的就要用 null代替,varchar格式用2個單引號『』代替,百分百好用,希望幫到你
10樓:匿名使用者
是numeric型別的欄位,插入的值不用加單引號.
11樓:
樓上的2位回答明顯不靠譜,你插入的最後一個值,對應的列是否數值型的。在插入數值型的列的時候,如果沒有值,要麼插入0,要麼插入null值,插入''就會出現從資料型別 varchar 轉換為 numeric 時出錯。你其他的列都應該沒問題,如果數值的長度夠長的話。
12樓:發生等將發生
你將型別為numeric的那列轉換一下
cast(『111111111』 as numeric(18,2))
後面的是小數點後的位數,自己看著給
從資料型別 varchar 轉換為 numeric 時出錯。
13樓:匿名使用者
資料型別不一致吧, 如果一致就不報錯了 , 看的是資料庫表結構的欄位定義的型別
從資料型別 nvarchar 轉換為 numeric 時出錯.該怎麼解決
14樓:
cast(a.num as numeric(18, 5))/cast(b.cknum as numeric(18, 5) 這個得到的是數值型別,而你前面兩個得到的是字元型別,我認為只要把這個直接轉字元就可以了:
to_char(a.num/b.cknum, $99999.99)
據型別 varchar 轉換為 numeric 時出錯
15樓:
一定是所執行的sql指令碼中有以下的情況:
1、將一個帶有非數字的字元存入數值型欄位或變數中。
如: declare @abc decimal(12,4)
set @abc='a3.5'就會出現此錯誤。
set @abc='3.5' 就不會出現此錯誤。
2.在convert或cast函式將某字串轉換為數值型資料時,源字串包含非數字字元,就會報此錯誤。如:
select convert(decimal(12,4),'a3.5')
3.在邏輯表示式中試圖比較一個非數字的字元與一個數值型變數時,會發生該錯誤,如
select * from tablename where **》'1000a'
*************************====
不如這樣:
select *
from haoma
where col001>'13400000000'
mysql中的資料型別varchar 255 表示什麼意思
呵呵,在mysql資料庫裡,使用varchar型別比較常見。用char的幾乎不多。char是一種固定長度 的型別,varchar則是一種可變長度的型別,它們的區別是 char m 型別的內資料列清塵裡,每個值容都佔用m個位元組,如果某個長度小於m,mysql就會在它的右邊用空格字元補足 在檢索操作中...
c語言中資料型別的轉換
include stdio.h main 輸出的資料型別不匹配 給你舉個例子吧 j i 實際j值和i一樣 j i,實際j值比i大一 你還沒明白 i 注意它是在i使用後自動加一printf d i 這是兩句命令,執行完i 後才輸出,i值自然 1 j 它是在使用前加一 printf d j 也是兩句命令...
在C語言中不同的資料型別之間是如何轉換的不同的資料型別是
在c語言中bai,不同資料型別在進du行運算時首zhi先要轉換成同一型別,一dao種是自動轉換,回二是強制轉換,如答 int a 將a強制轉換為int型 轉換原則 箭頭是轉換方向 char,short int unsigned long,float double 說這個題之前要接受一個事實 不同計算...