• 记录平时code点滴,这次是通过一张充满异样字符的表,对数据表中的每一列进行清理,比double quotation的issue难多了!


    需要提供对象:

    一张需要被替换字符的表。

    通过游标结合动态SQL对某一张特定表的所有列进行更新,主要是对其列值的异常字符处理。

    dbo.Characters_need_to_be_replaced 


    create proc usp_Clean_Table 

    @table_name sysname
    as
    begin 

    set nocount on 


    declare @col_name varchar(max)='',
    @SQLCMD varchar(max)=''
    declare replace_cur cursor local static forward_only for 
    select name from sys.all_columns where is_identity=0 and object_id=object_id(@table_name)
    open replace_cur
    while(1=1)
    begin 
    fetch next from replace_cur into @col_name 

    if @@fetch_status!=0 break


    --if 1=0 continue
            declare @col varchar(30)=''
            set @col=@col_name--为了不被覆盖只好定义个变量临时存储每次的列名。
            select @col_name='replace('+@col_name+',char('+cast(ASCII(chr) as varchar)+'),'''')' from dbo.Characters_need_to_be_replaced --这个类似于递归调用
            print @col_name
            set @SQLCMD='update '+@table_name+' set '+@col+'='+@col_name
            print @SQLCMD
            --exec master..sp_executesql N@SQLCMD

    end

    close replace_cur 

    deallocate replace_cur

    end 


    虽然显得有些粗糙,但是确实是个强大的功能,可以改写好多了。感悟就是要有迭代跟递归的思想。

    如果有来生,一个人去远行,看不同的风景,感受生命的活力。。。
  • 相关阅读:
    必须要狠狠的喷一把苹果
    机械键盘四种轴试用体验
    linux终端快捷键
    挥别我在软件开发的第一个公司
    mysql 查询优化
    oracle 用户创建这个挺靠谱
    重置了下系统好多关于mysql密码的文章都很渣拷分好的备用
    关于WebView的复习
    Bpmx实施经验
    使用Nexus私服代理其他maven仓库(jitpack、jcenter)
  • 原文地址:https://www.cnblogs.com/Frank99/p/5400011.html
Copyright © 2020-2023  润新知