獲取SQL資料庫中某個表中的所有欄位名稱的通用方法

暖楓無敵發表於2011-10-13

此功能經常用到,現在貼出程式碼,希望對有需要的能提到供點幫助吧。


1、首先建立一個檢視,如下。

create view fielddesc
 as 
   select o.name as oname, 
           c.name as cname,
           convert(varchar(30),p.value) as value,
           p.smallid as psmallid,
           t.name as tname from syscolumns c join systypes t 
           on c.xtype = t.xtype join sysobjects o 
           on o.id=c.id left join sysproperties p 
           on p.smallid=c.colid and p.id=o.id where o.xtype= 'U'; 


2、將你需要查詢的表名傳遞進來即可。

select * from fielddesc where oname = '你的表名';

3、在刪除一個表中資料時,級聯刪除另一個表中想對應的資料(含主外來鍵關係)

create trigger tri_del on tb_Users
for delete
as
begin
   delete tb_UserLogin from tb_UserLogin a,deleted d where a.UserID = d.UserID
end
 

4、SQL中根據名稱分組求最新一條資料的SQL語句:

select * from 預警記錄表 t 
where not exists(select 1 from 預警記錄表 where 雨量站名=t.雨量站名 and (預警時間>t.預警時間 or 預警時間=t.預警時間 and id>t.id))
and CONVERT(datetime,預警時間,120) between dateadd(day,-3,getdate()) and getdate()
order by  預警時間 desc




相關文章