ERROR [42000]雜談

出錯環境:windows server 2003+sqlserver2008 r2+odbc32

出錯詳情:System.Data.Odbc.OdbcException:ERROR [42000] [Microsoft][ODBC SQL Server Driver]

[SQL Server]字符串'7'後的引號不完整

如圖:

wKioL1SqRHXDnHRsAAFgzZuMIIQ745.jpg

SQL語句如右:insert into 測試('張三','7 7 7 7 0 6 8','13580891274');

初步處理:

因爲我寫的程序,在執行insert語句,如果失敗了,我把SQL語句寫到了日誌中。

所以,我在日誌中,將這個執行失敗的sql語句,手動複製到sqlserver 2008 中執行,成功了。

--------

那麼問題就來了,爲什麼明明成功的sql語句,自己寫程序會執行報錯呢?

問題查詢:

第一肯定是搜索問題,如果你搜索 ERROR [42000],很多大神會告訴你,這是保留字問題。

但是sql語句我手動複製到sqlserver2008能執行,所以排除。

深入思考:

到這裏我們就得開始考慮字符問題了,畢竟表面上我們看到的沒有任何問題,而且複製到sqlserver中也能執行。很多浮躁的哥們,肯定又開始罵微軟,或者開始考慮是不是sqlserver的bug了j_0063.gif

1,我將日誌的sql語句【日誌寫出來的sql不能編輯,否則看不到原始的字符編碼】,用UltraEdit打開,發現電話號碼的字符既然有00,如圖:

wKioL1SqRz_x9aeRAAB0hT4tg68158.jpg

再來看看 文本文檔顯示的情況:

wKiom1SqRqHjg9FlAAArF_K7V0w707.jpg

在文本文檔中,00顯示既然和空格無異。

【ps:00在windows表示中斷,如果對00有更深的描述,歡迎留言指正】

解決問題:

既然問題發現了,那麼解決就好辦了,只需要把電話號碼中的00編碼去掉,即可。

替換方法[寫的一個替換方法]

如有其他問題或建議,也歡迎企鵝號指教2446681809



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章