怎样在SQL Server中去除表中不可见字符

作者:489133 来源:赛迪网 时间:2009-02-05 15:23:00 

以下的实例为去除指定表中数据类型是VARCHAR,CHAR,NVARCHAR的字段值中的不可见字符。 注释:此处只去掉前后的不可见字符,不包括中间的字符,而且没有区分中文。

在使用前需要指定对应要修改的表名,并且需要在对应数据库下执行;

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

标签:SQL,Server,去除,字符
0
投稿

猜你喜欢

  • CSS Sprites

    2007-10-10 13:21:00
  • npm qs模块使用详解

    2024-04-25 13:11:14
  • Python高级数据分析之pandas和matplotlib绘图

    2022-11-06 05:36:16
  • 详解Python中的魔法函数与量子计算模拟

    2021-05-18 23:13:47
  • Python PyMySQL操作MySQL数据库的方法详解

    2024-01-21 17:44:24
  • PyTorch实现重写/改写Dataset并载入Dataloader

    2023-10-31 17:19:35
  • node.js使用免费的阿里云ip查询获取ip所在地【推荐】

    2024-05-13 09:30:23
  • Go语言题解LeetCode1260二维网格迁移示例详解

    2024-04-29 13:04:53
  • Python类的动态绑定实现原理

    2022-05-02 00:52:03
  • Pycharm远程调试和MySQL数据库授权问题

    2024-01-14 10:56:00
  • Python实战之OpenCV实现猫脸检测

    2021-02-07 16:56:24
  • 怎么样用xmlhttp读取远程xml的数据

    2008-10-11 13:52:00
  • 详解Python中的条件判断语句

    2022-05-03 09:33:28
  • PHP+jQuery翻板抽奖功能实现

    2024-05-05 09:17:43
  • LINUX下Oracle数据导入导出的方法详解

    2023-07-06 15:20:32
  • 详解MySQL中的死锁情况以及对死锁的处理方法

    2024-01-20 05:33:33
  • Python学习之流程控制与条件判断总结

    2023-08-20 13:37:02
  • HTML5 Canvas 起步(3) - 颜色与渐变

    2009-06-08 12:58:00
  • python名片管理系统开发

    2022-06-25 13:43:47
  • JS点击图片弹出文件选择框并覆盖原图功能的实现代码

    2024-02-26 07:17:33
  • asp之家 网络编程 m.aspxhome.com