亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

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

2024-08-31 00:59:14
字體:
來源:轉載
供稿:網友

文章作者: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,也就是找不到。這就郁悶了,字段中到底存儲了什么字符???,另一個同事教了一招,直接在企業管理器中返回該表的所有行記錄,然后全選查看該字段,發現確實是多出一個字符:

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


不是回車換行符會是什么字符呢?在百思不解之際,突然想起,不如看看這個表物理數據,一定能查出存儲在該字段的是什么字符。但是該表有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 命令查看物理數據:

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


接著使用dbcc page命令查看物理數據:

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


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

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

 


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

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

 

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

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

查是能查出來了,但是我發現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在字段里面。所以就算截掉一個文字并影響程序的功能和顯示。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品系列| 亚洲精品视频在线观看视频| 欧洲日本亚洲国产区| 亚洲欧美制服另类日韩| 91亚洲精品一区| 亚洲最大中文字幕| 亚洲码在线观看| 91久久久亚洲精品| 日韩福利伦理影院免费| 久久久久国产精品www| 成人久久18免费网站图片| 伊人伊成久久人综合网站| 国产精品久久国产精品99gif| 亚洲精品一区二区网址| 中文字幕九色91在线| 国产一区二区日韩| 午夜精品久久久久久久99热浪潮| 久久久精品中文字幕| 成人黄色av网站| 国产精品久久久久久一区二区| 在线国产精品视频| 中文字幕亚洲欧美日韩在线不卡| 欧美一级淫片播放口| 日韩欧美在线视频免费观看| 欧美一区视频在线| 裸体女人亚洲精品一区| 欧美日韩亚洲91| 亚洲综合第一页| 国产精品一区二区三区毛片淫片| 97色在线播放视频| 亚洲第一在线视频| 精品一区二区三区四区| 亚洲va男人天堂| 欧美黄色小视频| 久久久久久久久久久久av| 国产偷国产偷亚洲清高网站| 成人免费xxxxx在线观看| 亚洲免费高清视频| 欧美综合一区第一页| 国产成人精彩在线视频九色| 欧美亚洲另类在线| 亚洲韩国欧洲国产日产av| 色狠狠av一区二区三区香蕉蜜桃| 91久久久久久久一区二区| 日韩大胆人体377p| 国产精品激情av电影在线观看| 亚洲精品国产精品自产a区红杏吧| 亚洲精品国产拍免费91在线| 国产精品第8页| 国产99视频精品免视看7| 亚洲字幕在线观看| 国产精品∨欧美精品v日韩精品| 久久亚洲春色中文字幕| 欧美精品福利视频| 欧美一级电影免费在线观看| 精品欧美一区二区三区| 日本精品视频在线播放| 久久久久久久久久亚洲| 久久久久久久国产精品视频| 日韩大片免费观看视频播放| 欧美成人免费在线观看| 亚洲精品久久久久久久久| 国产精品电影在线观看| 欧美福利视频在线| 伊人久久综合97精品| 欧美一区二区三区艳史| 国产精品稀缺呦系列在线| 96精品视频在线| 日韩av在线一区| 亚洲精品一二区| 亚洲成av人乱码色午夜| 日韩欧美大尺度| 色综合伊人色综合网站| 久久久精品亚洲| 在线丨暗呦小u女国产精品| 中文字幕精品www乱入免费视频| 国产精品永久免费在线| 久久久免费观看视频| 青青久久av北条麻妃海外网| 久久久久久国产精品| 精品欧美aⅴ在线网站| 在线视频一区二区| 福利一区福利二区微拍刺激| 日韩在线视频免费观看| 日韩在线视频一区| 久久久久久网址| 欧美激情免费视频| 欧美性20hd另类| 亚洲影视中文字幕| 日韩av快播网址| 国产精品免费久久久久影院| 色噜噜狠狠色综合网图区| 国产精品色午夜在线观看| 国产午夜精品免费一区二区三区| 成人网页在线免费观看| 成人免费淫片aa视频免费| 国产精品久久久久久久电影| 国产精品自产拍在线观看中文| 国产精品精品视频一区二区三区| 久久久成人精品视频| 欧美激情精品久久久久久变态| 97国产精品视频人人做人人爱| 欧美午夜精品伦理| 国产aaa精品| 欧美视频中文在线看| 欧美一级黑人aaaaaaa做受| 久久综合免费视频| 在线视频欧美性高潮| 亚洲新声在线观看| 久久精品亚洲精品| 精品少妇一区二区30p| 国产欧美最新羞羞视频在线观看| 日韩av电影在线免费播放| 最新91在线视频| 91精品国产高清自在线看超| 成人av电影天堂| 久久免费精品日本久久中文字幕| 国产精品免费一区二区三区都可以| 国产91精品青草社区| 一本色道久久88精品综合| 久久99久国产精品黄毛片入口| 国内成人精品视频| 亚洲精品午夜精品| 亚洲精品成人av| 欧美日韩亚洲一区二| 亚洲欧美综合图区| 欧美精品精品精品精品免费| 米奇精品一区二区三区在线观看| 亚洲va欧美va国产综合剧情| 欧美激情亚洲综合一区| 91青草视频久久| 国产一区二区三区视频免费| 91精品久久久久久久久久久久久| 亚洲精品日韩在线| 亚洲黄色www网站| 狠狠色狠狠色综合日日五| 米奇精品一区二区三区在线观看| 国产成人精品久久二区二区| 日韩风俗一区 二区| 97国产真实伦对白精彩视频8| 国产精品69久久| 精品国产区一区二区三区在线观看| 亚洲国产天堂久久国产91| 欧美日韩在线免费观看| 国产不卡视频在线| 国产精品爽黄69天堂a| 欧美色视频日本高清在线观看| 久久九九热免费视频| 91香蕉嫩草神马影院在线观看| 国产精品视频一区国模私拍| 久久久噜噜噜久久久| 欧洲亚洲在线视频| 欧美日韩激情小视频| 精品在线小视频| 91精品成人久久| 另类图片亚洲另类| 欧美xxxx18性欧美| 亚洲精品国偷自产在线99热| 国产亚洲精品日韩| 日本精品久久中文字幕佐佐木| 国产精品福利久久久| 欧美激情久久久| 在线看福利67194| 亚洲黄色片网站|