好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 隱藏在SQLServer 字段中的超詭異字符解決過程

隱藏在SQLServer 字段中的超詭異字符解決過程

熱門標簽:菏澤語音電銷機器人加盟公司 外呼系統改進 湖南電腦外呼系統平臺 長沙智能外呼系統 地圖標注牌 廣東防封卡外呼系統原理是什么 知名電銷機器人價格 電銷機器人公司 需要哪些牌照 分享百度地圖標注多個位置

文章作者:jhkdiy
發表日期:2009-10-11
程序架構:B/S
開發環境:Windows XP + IIS6 + VS2003
數 據 庫:SQL Server 2000
部分功能:從 SQL Server 中導出數據到 Access。
這套系統做了大半年,這個導入導出還是問題不斷,我負責的這塊導入導出就是夾在網
絡版和單機版系統之間,只要任何一邊對數據庫做了改動這個導入導出就會失敗。哎,煩心
的事不止這些,最近又遇到了一個非常奇怪的問題。
由于之前的導入導出使用SQL Server 支持的OpenDataSource()函數來做,而當遇到
64位系統時就會遇到不支持Microsoft.Jet.OLEDB.4.0 ,所以重新編碼,技術步驟是先從SQL Server 讀數據到DataTable,然后遍歷這個DataTable,對每一行,將里面的數據重新組合成一條Insert 語句,然后打開Access文件鏈接,執行剛才生成的Insert語句,將數據插入到Access中。
我最終提交給Access執行的語句是根據SQL Server中的數據拼出來,比如SQL Server :select a, b, c from tblTemp
提交給Access執行的語句就是:

復制代碼 代碼如下:

Str1 = “Insert into”
Str2 = “tblTemp(a,b,c)values(”
strResult = str1 str2 “‘aa', 2, ‘cc' ” “)”

這回的重大問題是在SQL Server 表的b字段中有特殊字符,此字符使我的程序無法拼出完整的字符串,拼出來的字符串strResult 有時不帶最后的“)”,但奇怪的是,這個表總共有4萬多條記錄,只是組合個別記錄才會出現這個現象。但是提交給Access執行肯定不通過,提示SQL語法錯誤。
我于是查詢數據庫的這條記錄,用查詢分析器查詢沒發現任何的特殊字符,問了同事后才知道,他說之前有過部分表中的某些字符保存了客戶輸入的回車換行符,我頓時大悟,對呀,回車換行符是看不見的啊,于是,想使用下面的語句查詢字段中是否有回車換行符:
復制代碼 代碼如下:

select charindex(char(10), demc) from tblgc_jc_de where xh = 15641
select charindex(char(13), demc) from tblgc_jc_de where xh = 15641
select charindex(char(10) + char(13), demc) from tblgc_jc_de where xh = 15641
select charindex(char(13) + char(10), demc) from tblgc_jc_de where xh = 15641

但奇怪的是,返回都是0,也就是找不到。這就郁悶了,字段中到底存儲了什么字符啊?,另一個同事教了一招,直接在企業管理器中返回該表的所有行記錄,然后全選查看該字段,發現確實是多出一個字符:
查到有個看不見的字符
不是回車換行符會是什么字符呢?在百思不解之際,突然想起,不如看看這個表物理數據,一定能查出存儲在該字段的是什么字符。但是該表有44022條記錄,查某一條記錄的物理數據就是大海撈針,怎么辦???
我只想查詢這條記錄的物理數據要怎么做?能不能把這條數據放到另一個表中,這個表只有這一條記錄,這不就可以查看了嗎。哦,這個簡單,其實我同時建立了一個臨時的數據庫,這個數據庫只有一張表,這張表只有一條記錄,就是包含上面那個有問題的記錄,使用的SQL語句如下:
-- TYZW 是正式庫
use TYZW
-- 創建一個臨時數據庫,然后將有問題的那條
-- 記錄插入臨時庫。
create database tmpTYZW
go
select * into tmpTYZW..tblgc_jc_de from tblgc_jc_de where xh = 15641
go
現在是時候查看一下這條記錄的物理數據了,首先要在sysindexes系統表中查找出該表在物理文件中的位置,然后我們可以通過 dbcc page 命令查看物理數據:
查看表記錄在文件中的位置
接著使用dbcc page命令查看物理數據:
查看物理數據


現在是時候看看這條記錄的物理數據了:

物理數據

 


天啊,竟然是0,真不曉得是怎么存進去的。問題終于知道在那了,但是要如何解決呢?最簡單的方法就是將這個0替換掉,于是使用下列語句測試:

select replace(demc, char(0), '') as demc from tblgc_jc_de

 

但是不行,原因是replace函數找不到0這個字符,因為它查找是按兩個字節來找的,所以直接在SQL Server上找也找不到這個字符,替換也替換不了。但是,我又想了一下,能不能使用二進制來查找和替換?看了一下資料,使用下面的SQL語句能找出0在該字段的位置:

二進制方式查詢字符位置查是能查出來了,但是我發現replace函數還是不能用,除非是替換4位,也就是0x0038。

最后實在無奈,只能直接把有這個特殊字符的地段截掉一個文字,也就是連那個38也不要了:

select

case  when charindex(convert(varbinary(1),0x00),convert(varbinary(200),demc)) > 0

         then substring(demc,1,len(demc)-1)

         else demc

         end as DEMC

from tblgc_jc_de

 

這就是我現在用的最終解決方案,因為我查詢過,4萬多條記錄中只有8條有這個0在字段里面。所以就算截掉一個文字并影響程序的功能和顯示。

雖然我現在寫出來很多步驟看似走的很順,其實這個問題我用了幾天時間了,主要是找問題所在耗費了不少時間。現在給出此文希望廣大朋友在找這些問題時多個方向,因為存儲在字段中的特殊字符不一定就是常規的回車換行符,也有可能是其它字符,在此大家互相學習提高吧。

標簽:呼和浩特 天水 美容院 西寧 福建 泉州 珠海 商洛

巨人網絡通訊聲明:本文標題《隱藏在SQLServer 字段中的超詭異字符解決過程》,本文關鍵詞  隱,藏在,SQLServer,字段,中的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《隱藏在SQLServer 字段中的超詭異字符解決過程》相關的同類信息!
  • 本頁收集關于隱藏在SQLServer 字段中的超詭異字符解決過程的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 3d肉浦团在线观看| 国产99精品在线观看| 8090新视觉影院| 一个人在线观看免费高清视频www| 国产日批| 国产妇乱子伦视频免费| 我和漂亮岳的性经历全文| 97超视频在线观看| 中文字幕久久久久久精品欧美| 伊人碰碰| Japanese XXX Japan Video XXX| 《性/生活》韩国无删减| 极品粉嫩小仙女高潮喷水久久| 国产日韩一区二区三区在线播放| 女王玉足强制榨精男奴视频网站| 少妇熟女潮喷AV视频在线观看| 把美女日出白浆| 国产一区二区三区水野朝阳| fiscobcos| 亚洲AV无码国产精品| 天天插狠狠干| 中国精品中文字幕久久久怎么设置| m3u8吃瓜国产精品| 欧美色无极| 亚洲逼图| 金寨县| 欧美视频精品全部免费观看 | 免费毛片a线观看| 布尔津县| 性动漫有肉无遮挡在线观看| 一男一女搞基| 开小箩莉嫩苞h视频| 乱人伦短篇| 超淫特攻队电影| 日韩 无码毛片一区二区| 国产一级电影在线观看| 汤唯色戒在线无删减播放| 国产一级做a爰片久久毛片99 | 黄色软件在线下载| 啊轻点灬大巴太粗太长了视频| 成人毛片18女人毛片免费看电影|