zoukankan      html  css  js  c++  java
  • 记录平时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 


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

    如果有来生,一个人去远行,看不同的风景,感受生命的活力。。。
  • 相关阅读:
    react实现拖拽
    JS实现判断滚动条滚到页面底部并执行事件的方法
    获取地址中的参数 封装在params对象里面
    git常用命令
    Linux定时任务Crontab命令详解
    tars 部署
    tars 问题汇总
    Mac
    http head
    SSL
  • 原文地址:https://www.cnblogs.com/Frank99/p/5400011.html
Copyright © 2011-2022 走看看