去除指定表中数据类型是VARCHAR,CHAR,NVARCHAR的字段值中的不可见字符

转载 2006年05月28日 13:59:00
 


  
 
--作用:去除指定表中数据类型是VARCHAR,CHAR,NVARCHAR的字段值中的不可见字符
--注意:此处只去掉前后的不可见字符,不包括中间的字符,而且没有区分中文
--有兴趣的可以自己加个判别的中文,其实也很简单的,就是限定一个字符的范围就可以了
--日期:2004-11-04
--作者:ICERIVER
--注意:使用前请指定对应要修改的表名,并且需要在对应数据库下执行;
SET NOCOUNT ON

 

DECLARE @TblName  VARCHAR(100)
DECLARE @UpdateString NVARCHAR(1000)
DECLARE @SelectString NVARCHAR(1000)
DECLARE @COlName VARCHAR(100)
DECLARE @COUNT  INT

 

SET @TblName = 'YOURTABLENAME'--指定想要修改的表名

 

--定义游标取出指定表内的数据类型是VARCHAR,char,nVARCHAR的字段名称
DECLARE cur_ColName  CURSOR
FOR
SELECT col.name
FROM syscolumns AS col
 inner join sysobjects  AS obj  ON col.ID = obj.ID
 INNER join systypes  AS typ  ON col.xtype = typ.xtype
WHERE obj.xtype ='U'
AND obj.name = @TblName
AND typ.name IN ('VARCHAR','CHAR','NVARCHAR','NCHAR')
FOR READ ONLY
--打开游标
OPEN cur_ColName

 

FETCH NEXT FROM cur_ColName INTO @ColName
IF @@FETCH_STATUS<>0
BEGIN
 PRINT '没有对应表或字段,'
 PRINT '请确认当前数据库内有' + @TblName + '表,'
 PRINT '或该表内有VARCHAR、CHAR、NVARCHAR、NCHAR类型的字段!'
 GOTO LABCLOSE
END
--循环修改
WHILE @@FETCH_STATUS=0
BEGIN
 --拼修改字符串
 --去掉左边的不可见字符
 SET @SelectString = 'SELECT @COU=COUNT(*)
     FROM ' + @TblName +'
    WHERE ASCII(LEFT(' + @ColName +',1))<32
    AND '+ @ColName + ' IS NOT NULL'
 
 EXEC sp_executesql @SelectString,N'@COU INT OUTPUT',@COUNT OUTPUT

 

 WHILE @COUNT>0
 BEGIN
  SET @UpdateString =
   ' UPDATE ' + @TblName +
   ' SET ' + @ColName + '=RIGHT(' + @ColName + ',LEN(' + @ColName + ')-1)
    WHERE ASCII(LEFT(' + @ColName + ',1))<32
    AND ' + @ColName + ' IS NOT NULL'
 
  EXEC sp_executesql @UpdateString
  EXEC sp_executesql @SelectString,N'@COU INT OUTPUT',@COUNT OUTPUT
 END

 

 --去掉右边的不可见字符
 SET @SelectString = 'SELECT @COU=COUNT(*)
     FROM ' + @TblName +'
    WHERE ASCII(RIGHT(' + @ColName +',1))<32
    AND '+ @ColName + ' IS NOT NULL'
 
 EXEC sp_executesql @SelectString,N'@COU INT OUTPUT',@COUNT OUTPUT

 

 WHILE @COUNT>0
 BEGIN
  SET @UpdateString =
   ' UPDATE ' + @TblName +
   ' SET ' + @ColName + '=LEFT(' + @ColName + ',LEN(' + @ColName + ')-1)
    WHERE ASCII(RIGHT(' + @ColName + ',1))<32
    AND ' + @ColName + ' IS NOT NULL'
 
  EXEC SP_EXECUTESQL @UpdateString
  EXEC sp_executesql @SelectString,N'@COU INT OUTPUT',@COUNT OUTPUT
 END

 

 PRINT 'column:   ' + @ColName + '---ok'
 FETCH NEXT FROM cur_ColName INTO @ColName
END
--关闭、释放游标
LABCLOSE: CLOSE cur_ColName
  DEALLOCATE cur_ColName

去除指定表中数据类型是VARCHAR,CHAR,NVARCHAR的字段值中的不可见字符

去除指定表中数据类型是VARCHAR,CHAR,NVARCHAR的字段值中的不可见字符        --作用:去除指定表中数据类型是VARCHAR,CHAR,NVARCHAR的字段值中的不可见字符-...
  • weilian000
  • weilian000
  • 2007年04月01日 11:25
  • 314

char、varchar和nvarchar的区别

前言       设计数据库的时候,遇到了字段的类型用char,varchar和nvarchar的问题。下面小编就来讲解一下。 是什么        char是定长的,也就是无论你输入的字符多长,它...
  • u013037201
  • u013037201
  • 2016年04月23日 23:45
  • 2671

sqlserver数据库数据类型中varchar和nvarchar的区别

nvarchar   和   varchar   的区别是存储方式不同  varchar是按字节存储的。而带nvarchar是按字符存储的  比如说varchar(40),能存储40个字节长度的字符,...
  • konkong5501
  • konkong5501
  • 2013年10月16日 21:18
  • 1289

Oracle 关于 CHAR,VARCHAR,VARCHAR2,nchar,nvarchar 4者的区别使用

有没有人遇到过,疑惑过关于varchar和varchar2的使用,到底用哪个?为什么区分的问题? 多google一下,差不多就明白了,我就参考别人的讲解一下。 先说,char和nchar的区别。 ...
  • Ghohankawk
  • Ghohankawk
  • 2013年12月13日 13:02
  • 835

SQL学习---将所有的char,varchar改为nchar,nvarchar

CREATE PROC p_ToUnicode @type tinyint=0 --修改方式,0=仅查询可修改情况,1=仅所有列可修改时才修改,2=修改可修改列,报告不可修改列 AS SET NOC...
  • liguoming05
  • liguoming05
  • 2013年09月18日 15:05
  • 1082

数据库中varchar和Nvarchar区别与联系

在数据库中新建表的时候发现了字段类型有的带n有的不带n,那么两者之间有什么区别?         于是上网查找一些资料如下: 一、 1、CHAR。CHAR存储定长数据很方便,CHAR字段上的索引效率级...
  • xunzaosiyecao
  • xunzaosiyecao
  • 2015年05月13日 19:46
  • 1839

PostgreSql数据库中表字段由类型varchar改变成整型

今天同事在修改一个表的字段类型时,遇到了
  • chuan_day
  • chuan_day
  • 2014年11月11日 15:45
  • 4547

MySQL数据库数据类型(char(n),varchar(n),nchar(n),nvarchar(n)的区别)

在学习这四种数据库类型时,我们可能会有点搞不清他们中的区别,而至于我们会随便使用其中一个,可能某次运行程序出了错误,都不知道是哪里错了,所以我们有必要将这四种的区别弄明白,让我们在编程的时候,避免一些...
  • IUNIQUE
  • IUNIQUE
  • 2016年10月23日 15:55
  • 1238

MySQL数据库char与varchar区别

① VARCHAR与CHAR字符型数据的差异字符串数据类型 MySQL数据类型 含义 char(n) 固定长度,最多...
  • Gane_Cheng
  • Gane_Cheng
  • 2016年08月25日 17:10
  • 2566

数据库中char varchar nchar nvarchar的区别

数据库中char varchar nchar nvarchar的区别           我们在进行数据库的设计的时候,很多情况下表中的字段都是用的是字符串类型的数据,其中就有四种选择charva...
  • nangeali
  • nangeali
  • 2016年04月12日 20:35
  • 1311
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:去除指定表中数据类型是VARCHAR,CHAR,NVARCHAR的字段值中的不可见字符
举报原因:
原因补充:

(最多只允许输入30个字)