對多個資料表的同一字段進行處理

2022-02-21 12:48:29 字數 1199 閱讀 6082

對同一資料庫下的多個資料表的同一字段進行處理舉例

例如多個資料表中都含有csign欄位,需要替換空格為空,『』

1 查詢含有該字段的資料表名稱

select sc.name,so.name from syscolumns sc left join

sysobjects so on sc.id=so.id

where sc.name='csign' and so.type='u'

或select so.name from sysobjects so where so.id in (select id from syscolumns

where name='csign' )

and   so.type='u'

2 實現替換『 』替換為『』

宣告列名、表名和定義游標

declare @colname as nvarchar(100),@tablename as nvarchar(100),@sql as  nvarchar(1000)

declare @cur as cursor

set @colname='csign'

為游標賦值

set @cur=cursor for (select so.name from syscolumns sc left join

sysobjects so on sc.id=so.id

where sc.name='csign' and so.type='u')

--預設為全域性游標,

宣告區域性游標也可以:set @cur=cursor global/local for這裡沒有必要

開啟游標

open @cur

獲取值到臨時變數中

fetch @cur into @tablename

迴圈替換

while  @@fetch_status=0 --獲取成功

begin

set @sql='update ' + @tablename +' set ' +@colname +' =replace('+

@colname +','' '','''')'

print @sql

exec(@sql)

fetch next from @cur into @tablename

end關閉游標

close @cur

釋放游標

deallocate @cur

oracle 批量更改所有表的同一字段型別

經常需要oracle中的所有的字段的型別更改為另外乙個型別,可以考慮利用如下 此處的demo為將nvarchar2轉為varchar2型別並且字段長度保持不變。declare cursor c tab is select from user tab columns t where t.data ty...

mysql 根據不同條件查詢表中同一字段

需求 需要在一張表中,查詢某個店鋪05 17和05 10兩天的同乙個gmv欄位資料 遇到問題 在測試過程中發現,如果兩天中任意一天沒有資料,則該店鋪整體資料均不顯示 解決 select a.seller nick,ifnull a.gmv,0 ifnull b.gmv,0 as last gmv f...

多表相加同一欄位union聯合的使用

業務需求 最近的問題就是,有很多部門,部門又擁有商品,商品有不同的品種,我們需要計算出不同部門裡有多少不同商品,但是對乙個部門來說 既有屬於部門的商品,也有屬於個人的商品,這也就是兩個表,首先,我們知道,我們需要查的就是部門中同乙個商品,個人持有量和部門持有量。select ri equipment...