SQL server 遍歷查詢數據庫中的表以及查詢特定表特定數據

應用場景:最近需要部署一套測試系統,如果將數據庫清理掉,那麼數據缺失,保護用戶的的真實身份證號碼,防止泄露,同時保證數據完整性,就想到 直接將系統中所有的真實身份證進行一次修改,但是數據庫的表比較多,一張一張表去修改太耗費時間了,所以採用了獲取庫中所有表,並根據表名獲取對應字段的值(由於是一套系統所以在建表的時候身份證字段名稱都是一致)。

declare @tName nvarchar(20)
declare @colName nvarchar(20)
declare @str nvarchar(max)
declare mycursor cursor FOR (SELECT DISTINCT col.name AS cl_name,tb.name AS tab_name FROM sys.columns col 
LEFT JOIN sys.objects AS tb ON tb.object_id = col.object_id
WHERE tb.type='U' AND col.name LIKE '%ID%' AND col.name IN('CardID'))
open mycursor
fetch next from mycursor into @colName,@tName
while @@FETCH_STATUS=0
begin
    set @str='select '+@colName+' from '+@tName
    --SET @str='UPDATE '+@tName+' SET '+@colName+'=REPLACE('+@colName+',SUBSTRING('+@colName+',2,2),SUBSTRING('+@colName+',2,2)+1)'
    print @str
    exec(@str)
fetch next from mycursor INTO @colName,@tName
end
close mycursor
deallocate mycursor

關鍵點:遊標、SUBSTRING,REPLACE,SYS.OBJECTS,SYS.COLUMS

發佈了5 篇原創文章 · 獲贊 1 · 訪問量 1303
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章