在sql中如何替换去掉回车符?

作品笔者:jhkdiy 发布日期:2009-10-11 程序布局:B/S 开垦条件:Windows XP

select   *   from   table1   where   charindex(char(10),colname)   >
  0  

  • IIS6 + VS二〇〇〇 数 据 库:SQL Server 二零零三 部分机能:从 SQL Server
    中程导弹出多少到 Access。
    那套系统做了大3个月,这么些导入导出照旧难点频频,作者担负的那块导入导出正是夹在互联网版和单机版系统之间,只要任何单方面临数据库做了转移这么些导入导出就能够倒闭。哎,烦心
    的事不仅这几个,目前又遇见了二个不行奇怪的标题。 由于事情未发生前的导入导出使用SQL
    Server 协理的OpenDataSource函数来做,而当遇到六11位系统时就能够碰到不接济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,cState of Qatarvalues(” 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命令查看物理数据:

char(13卡塔尔(قطر‎代表回车键  
   
  select   *   from   你的表   where  
charindex(char(13),列名)>0       
    
    
  要是您要询问换行,将在用回车换行.  
  char(13)+char(10)  
   
  select   *   from   你的表   where  
charindex(char(13)+char(10),列名)>0

后天是时候看看那条记下的情理数据了:

在sql中替换去掉回车符的sql语句:

天啊,竟然是0,真不晓得是怎么存进去的。难题追根究底领会在那了,可是要哪些消除呢?最轻松易行的方法正是将这么些0替换掉,于是利用下列语句测量检验:

把回车符替换到空;

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

update tablename set field1=replace(field1,’ ‘,”)

然则那些,原因是replace函数找不到0这一个字符,因为它寻觅是按四个字节来找的,所以平昔在SQL
Server上找也找不到这么些字符,替换也轮番不了。可是,笔者又想了须臾间,能还是不能够使用二进制来查究和替换?看了一下素材,使用上边包车型地铁SQL语句能寻找0在该字段的位置:

或:

查是能查出来了,可是自身发觉replace函数照旧不能用,除非是替换4位,也正是0x0038。

update tablename set
field1=replace(replace(field1,char(10),”),char(13),”)

末段实际上没办法,只可以直接把有那么些特殊字符的地点截掉三个文字,也正是连那么些38也并不是了:

回车符号在sql中是char(13卡塔尔国,第叁个指令本人用过;第叁个指令没在实际上测量检验用,倘使要替换为别的字符值,把单引号中插足相应值就可以。

发表评论

电子邮件地址不会被公开。 必填项已用*标注