您当前位置:优侠库 > 资讯攻略 >
来源:未知
2021-06-26 23:27:35 浏览: 分类:资讯攻略

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

以下示例将删除数据类型为varchar、char和nvarchar的指定表的字段值中的不可见字符。注意:这里只去掉了前后的隐形字符,不包括中间的字符,没有中英文区分。

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

SET no count ON
DECLARE @ TB lname VARCHAR(100)
DECLARE @ UpdateString NVARCHAR(1000)
DECLARE @ select string NVARCHAR(1000)
DECLARE @ colname VARCHAR(100)
DECLARE @ count int
SET @ TB lname = ' your tablename '-指定要修改的表的名称
-定义游标获取指定表中的数据类型为ID
INNER join systypes AS typ ON col . xtype = typ . xtype
其中obj . xtype = ' U '
AND obj . name = @ TBL name
AND typ . name IN(' VARCHAR ',' CHAR ',' NVARCHAR ',Nchar ')
-对于只读
-open cursor
open cur _ colname
fetch next from cur _ colname into @ colname
if @“0
BEGIN
PRINT”没有相应的表或字段。
'PRINT '请确保当前数据库中有一个'+@TblName+'表,
' PRINT '或者该表中有VARCHAR、CHAR、NVARCHAR和NCHAR字段!
' goto lab close
end-循环修改
while @ @ fetch _ status = 0
begin
-拼写修改后的字符串
-删除左边不可见的字符
SET @ SELECT string = ' SELECT @ COU = COUNT(*)
FROM '+@ TblName+'
WHERE ASCII(LEFT('+@ ColName+',1))& lt;32
AND '+@ ColName+' NOT NULL '
EXEC sp _ execute SQL @ select string,N'@COU INT OUTPUT ',
@ COUNT OUTPUT WHILE @ COUNT & gt;0
BEGIN
SET @ UPDATE string =
' UPDATE '+@ TBL name+
' SET '+@ ColName+' = RIGHT('+@ ColName+',LEN('+@ ColName+')-1)
WHERE ASCII(LEFT('+@ ColName+',1))& lt;32
和'+ @ColName +'不是NULL '
EXEC sp _ execute SQL @ UpdateString
EXEC sp _ execute SQL @ select string,N'@COU INT OUTPUT ',@ COUNT OUTPUT
END
-从'+@ tblname+'
where ASCII(right('+@ ColName+',1 32[]0
BEGIN
SET @ UpdateString = ' UPDATE '+@ TBL name+' SET '
+@ ColName+' = LEFT('+@ ColName+',LEN('+@ ColName+')-1)
WHERE ASCII(RIGHT('+@ ColName+',1))& lt;32
AND '+@ ColName+' NOT NULL '
EXEC SP _ execute SQL @ UpdateString
EXEC SP _ execute SQL @ select string,N'@COU INT OUTPUT ',
@ count OUTPUT
end
print ' column:'+@ ColName+'-ok '
fetch next from cur _ ColName into @ ColName
end
-close,释放光标labclose

关键词:SQLServer

优侠库网站每天提供最新最热门的安卓手机软件、游戏下载、分享热门手游资讯攻略教程、手机软件教程步骤,专注安卓手机游戏软件下载。

本文链接:http://www.123down.cn/gonglue/227273.html

攻略资讯
安卓软件