怎么循环一个表的列名

ZacharyTaylor 2011-12-03 10:30:17

怎么循环一个表的列名,然后判断那些列的名称是可以转换成日期类型的
要较完整的代码 谢了!
...全文
220 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
yu_hong09 2011-12-05
  • 打赏
  • 举报
回复
select * from(
select o.name as table_name,c.name as field_name,t.name as type,c.length as
length,c.isnullable as isnullable,convert(varchar(30),p.value) as desp
from syscolumns c
join systypes t on c.xtype = t.xusertype
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'
) as aa where aa.table_name='表名'
l1314j 2011-12-05
  • 打赏
  • 举报
回复

declare @columnName varchar(80)
DECLARE CURSOR1 CURSOR FOR
select column_name from information_schema.columns where table_name='mdthreepl'
Open CURSOR1
FETCH NEXT FROM CURSOR1 INTO @columnName
WHILE @@FETCH_Status=0
BEGIN
print @columnName
if isdate(@columnName)=1
print '是時間'
else
print '不是時間'

FETCH NEXT FROM CURSOR1 INTO @columnName
END
CLOSE CURSOR1
DEALLOCATE CURSOR1


結果 :
ThreePLCode
不是時間
ThreePLName
不是時間
Address
不是時間
Status
不是時間
GenerateDate
不是時間
LastEditBy
不是時間
LastEditDt
不是時間
ThreePLFullName
不是時間
DataTo
不是時間
Ref1
不是時間
EnglishFullName
不是時間
EnglishAddress
不是時間
l1314j 2011-12-05
  • 打赏
  • 举报
回复
declare @columnName varchar(80)


DECLARE CURSOR1 CURSOR FOR
select column_name from information_schema.columns where table_name='mdthreepl'
Open CURSOR1
FETCH NEXT FROM CURSOR1 INTO @columnName
WHILE @@FETCH_Status=0
BEGIN
print @columnName
if isdate(@columnName)=1
print '是時間'
else
print '不是時間'

FETCH NEXT FROM CURSOR1 INTO @columnName
END
CLOSE CURSOR1
DEALLOCATE CURSOR1

結果
ThreePLCode
不是時間
ThreePLName
不是時間
Address
不是時間
Status
不是時間
GenerateDate
不是時間
LastEditBy
不是時間
LastEditDt
不是時間
ThreePLFullName
不是時間
DataTo
不是時間
Ref1
不是時間
EnglishFullName
不是時間
EnglishAddress
不是時間
YnSky 2011-12-05
  • 打赏
  • 举报
回复
select name from syscolumns where object_id=object_id('表名')
wquanchao 2011-12-04
  • 打赏
  • 举报
回复
代码没有,哈哈
ZacharyTaylor 2011-12-03
  • 打赏
  • 举报
回复

怎么循环一个表的列,用存储过程,一定要是循环遍历,从第一列到最后一列,中间用IF判断是否字段名可以转换为日期,要的是循环循环循环循环循环循环的代码,因为中间还有N多代码要处理,希望这次说清了
-晴天 2011-12-03
  • 打赏
  • 举报
回复
不表述了,相信聪明的你,一眼就能看出这一段程序的含义:
create table tb(c1 int,c2 char(10),c3 varchar(10),c4 decimal(8,2),c5 datetime,c6 float,c7 money,c8 ntext,c9 nvarchar(max))
go
select name,system_type_id from sys.columns where object_id=object_id('tb')
/*
name system_type_id
-------------------------- --------------
c1 56
c2 175
c3 167
c4 106
c5 61
c6 62
c7 60
c8 99
c9 231

(9 行受影响)

*/
go
drop table tb
pengxuan 2011-12-03
  • 打赏
  • 举报
回复

select * from syscolumns where object_id=object_id('表名')
--里面的name字段就是列名称
快溜 2011-12-03
  • 打赏
  • 举报
回复
select * from sys.columns where object_id=object_id('表名')
ZacharyTaylor 2011-12-03
  • 打赏
  • 举报
回复
怎么循环一个表的列,给点代码吧,要判断列的名称而不是数据类型
黄_瓜 2011-12-03
  • 打赏
  • 举报
回复
能赚日期的太多了吧
pengxuan 2011-12-03
  • 打赏
  • 举报
回复
判断列名称是不是可以转换成日期类型?
还是列的数据类型
黄_瓜 2011-12-03
  • 打赏
  • 举报
回复
AcHerat 元老 2011-12-03
  • 打赏
  • 举报
回复
可以转换成日期类型

......

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧