位置: 编程技术 - 正文

隐藏在SQLServer 字段中的超诡异字符解决过程(隐藏在大山深处的罪恶)

编辑:rootadmin

文章作者:jhkdiy 发表日期:-- 程序架构:B/S 开发环境:Windows XP + IIS6 + VS 数 据 库:SQL Server 部分功能:从 SQL Server 中导出数据到 Access。 这套系统做了大半年,这个导入导出还是问题不断,我负责的这块导入导出就是夹在网 络版和单机版系统之间,只要任何一边对数据库做了改动这个导入导出就会失败。哎,烦心 的事不止这些,最近又遇到了一个非常奇怪的问题。 由于之前的导入导出使用SQL Server 支持的OpenDataSource()函数来做,而当遇到 位系统时就会遇到不支持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执行的语句就是: 这回的重大问题是在SQL Server 表的b字段中有特殊字符,此字符使我的程序无法拼出完整的字符串,拼出来的字符串strResult 有时不带最后的“)”,但奇怪的是,这个表总共有4万多条记录,只是组合个别记录才会出现这个现象。但是提交给Access执行肯定不通过,提示SQL语法错误。 我于是查询数据库的这条记录,用查询分析器查询没发现任何的特殊字符,问了同事后才知道,他说之前有过部分表中的某些字符保存了客户输入的回车换行符,我顿时大悟,对呀,回车换行符是看不见的啊,于是,想使用下面的语句查询字段中是否有回车换行符: 但奇怪的是,返回都是0,也就是找不到。这就郁闷了,字段中到底存储了什么字符啊?,另一个同事教了一招,直接在企业管理器中返回该表的所有行记录,然后全选查看该字段,发现确实是多出一个字符: 不是回车换行符会是什么字符呢?在百思不解之际,突然想起,不如看看这个表物理数据,一定能查出存储在该字段的是什么字符。但是该表有条记录,查某一条记录的物理数据就是大海捞针,怎么办??? 我只想查询这条记录的物理数据要怎么做?能不能把这条数据放到另一个表中,这个表只有这一条记录,这不就可以查看了吗。哦,这个简单,其实我同时建立了一个临时的数据库,这个数据库只有一张表,这张表只有一条记录,就是包含上面那个有问题的记录,使用的SQL语句如下: -- TYZW 是正式库 use TYZW -- 创建一个临时数据库,然后将有问题的那条 -- 记录插入临时库。 create database tmpTYZW go select * into tmpTYZW..tblgc_jc_de from tblgc_jc_de where xh = 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位,也就是0x。

最后实在无奈,只能直接把有这个特殊字符的地段截掉一个文字,也就是连那个也不要了:

select

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

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

else demc

end as DEMC

from tblgc_jc_de

这就是我现在用的最终解决方案,因为我查询过,4万多条记录中只有8条有这个0在字段里面。所以就算截掉一个文字并影响程序的功能和显示。

虽然我现在写出来很多步骤看似走的很顺,其实这个问题我用了几天时间了,主要是找问题所在耗费了不少时间。现在给出此文希望广大朋友在找这些问题时多个方向,因为存储在字段中的特殊字符不一定就是常规的回车换行符,也有可能是其它字符,在此大家互相学习提高吧。

推荐整理分享隐藏在SQLServer 字段中的超诡异字符解决过程(隐藏在大山深处的罪恶),希望有所帮助,仅作参考,欢迎阅读内容。

隐藏在SQLServer 字段中的超诡异字符解决过程(隐藏在大山深处的罪恶)

文章相关热门搜索词:隐藏在霍格沃茨当教授最新章节,隐藏在黑暗的钥匙啊显示你真正的力量吧,隐藏在写字楼里的暴利生意,隐藏在国家高层的间谍,隐藏在写字楼里的暴利生意,隐藏在黑暗的钥匙啊显示你真正的力量吧,隐藏在写字楼里的暴利生意,隐藏在写字楼里的暴利生意,内容如对您有帮助,希望把文章链接给更多的朋友!

将备份数据还原到数据库的步骤 1、首先,在SQL企业管理器中新建一个临时数据库A1。2、右击A1数据库,选择:所有任务-还原数据库。3、在还原数据库窗口中,选择:从设备。4、点击

SQL Server 高速缓存依赖分析 一,使数据库支持SQL高速缓存依赖性。二,使表支持SQL高速缓存依赖性。三,在ASP.NET应用程序的web.config文件中包含SQL连接字符串。四,以如下方式利用

SQL 多表连接查询实现语句 1.理论只要两个表的公共字段有匹配值,就将这两个表中的记录组合起来。个人理解:以一个共同的字段求两个表中符合要求的交集,并将每个表符合

标签: 隐藏在大山深处的罪恶

本文链接地址:https://www.jiuchutong.com/biancheng/349475.html 转载请保留说明!

上一篇:sql 服务器知识(sql服务在哪)

下一篇:sql复制表结构和数据的实现方法(sql复制表的语句)

  • 工业企业结转成本表格模板
  • 个人所得税有哪些减免政策
  • 个人所得税汇缴报告
  • 有限公司能否申请破产
  • 当月开票当月付款分录
  • 外商独资和中外合资的区别
  • 企业清理固定资产所得税汇算是需要调整吗
  • 资产负债表的应付职工薪酬怎么填
  • 无形资产 减值
  • 小型企业缴纳企业所得税
  • 银行利息收入确认时间会计与税法的差异
  • 工伤保险费的缴纳,以下正确的是
  • 预收电费怎么做会计分录
  • 国税定额发票有效期是多长时间
  • 小规模定期定额计税依据
  • 职工福利费包括五险一金吗
  • 加盟费收入如何入账
  • 2019年收入不足6万如何退税
  • 太阳能真空管和普通管的区别
  • 附加税有哪些税种
  • 差旅费中的车票可以抵扣进项税吗
  • 资产负债表在建工程怎么填列
  • 坏账准备为负数怎么填资产负债表
  • 暂估入库发票回来怎么做账
  • 社保缴费要和工龄一致吗
  • 公司帐户能直接转账吗
  • 什么情况下可以认定为工伤
  • element plus 虚拟化表格
  • laravel learnku
  • session失效的方法
  • 财务报表怎么判断盈亏
  • 以前年度企业所得税分录
  • vue项目运行报错
  • 上市公司分红派股
  • vscode怎么运行前端
  • 工程的直接成本包括哪些
  • 关于laravel应用中的各个目录的作用,说法错误的是
  • 开发票的销售收入,正规的做账怎么做
  • 营业税借方表示什么
  • 开发支出的含义
  • 转让使用过的固定资产增值税
  • 减按10的税率征收个人所得税
  • 铁路运费的印花税进什么科目
  • c语言缺省值
  • python中返回结果为true
  • 已抵扣发票在什么地方查
  • 企业所得税成本核定
  • 扣缴义务人如何登录电子税务局
  • 工会记账凭证怎么记
  • 外购产品捐赠
  • 金税四期上线后对保险
  • 税控服务费全额抵扣
  • 利润表中的资产处置收益应该计入营业利润还是利润总额
  • 广告费可以结转几年
  • 房屋租赁费如何缴纳个税
  • 电子商务会计科目有哪些
  • 上月财务费用多做了,本月怎么调
  • 医院收费票据可以入账吗
  • 管理费用包括哪些税
  • 结转成本应附什么原始凭证
  • 银行日记账的登记依据有哪些
  • 买钢管扣件
  • mysqli查询
  • 新疆喀什地区身份证号码开头
  • 电脑出现黑屏英文要怎么处理
  • win10预览体验三个选项
  • xp系统如何查询配置
  • ubuntu升级到21.04
  • 电脑联想windows7
  • windows 8.1将“计算机”(This PC)更名为“此电脑”
  • win+p怎么用
  • Win10 64位系统下火狐浏览器打开带flash网页卡死的解决方法
  • PQV2ISECURITY.EXE - PQV2ISECURITY是什么进程 有什么用
  • Win10系统如何打开任务管理器
  • Linux VPS vsftp/proftpd FTP时间差八小时的解决方法
  • 使用js检测浏览器的网站
  • jquery 滑块
  • jquery回车触发事件
  • python爬取电视剧
  • 湖北税务登不上去是怎么了
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设