如何select 部分属性?

weihao20090930 2010-06-24 04:23:04

大家好,我有一个表,如下:

ID Index Name 。。。。。。。。
1 1 张三 。。。。。。
2 22 李四 。。。。。。
3 35 王五 。。。。。。。
。。。。。。。。。。。。。。。。

这个表属性很多,我想选取除了ID属性之外的所有属性,即,希望得到的表如下:

Index Name 。。。。。。。。
1 张三 。。。。。。
22 李四 。。。。。。
35 王五 。。。。。。
。。。。。。。。。。。。。

请问我该用什么select命令呢? 谢谢!
...全文
191 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjb211434 2010-06-26
  • 打赏
  • 举报
回复
DECLARE @s NVARCHAR(4000)
SET @s=''
SELECT @s=@s+','+QUOTENAME(Name) FROM syscolumns WHERE ID=OBJECT_ID('表名') AND Name NOT IN('不显示的列名') ORDER BY colid
SET @s=STUFF(@s,1,1,'')
print('select '+@s+' from 表名')

用这个可以了,写程序的时候碰到要写sql语句的时候总是懒得去写所以的列名,有时用这个sql语句直接拼接一下,拷贝到程序里改下就行了,省了很多功夫,而且不容易出错
ChinaITOldMan 2010-06-26
  • 打赏
  • 举报
回复
只能用動態調用syscolumns
brownhwy 2010-06-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 weihao20090930 的回复:]
大家好,我有一个表,如下:

ID Index Name 。。。。。。。。
1 1 张三 。。。。。。
2 22 李四 。。。。。。
3 35 王五 。。。。。。。
。。。。。。。。。。。。。。。。

这个表属性很多,我想选取除了ID属性之外的所有属性,即,希望得到的表如下:

Index Name 。。。。。。。。
1 张三 。。。。。。
22 李四 。。。。。。
35……
[/Quote]

如果是SQL2000的话,在查询分析器中右键-表句-在新窗口中编写脚本-选择 即可把所有列选上,再把ID列删除即可。
feilniu 2010-06-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 kerafan 的回复:]

这个可以帮到你
SQL code

--使用sp_help 获得所有列名
sp_help 表名
[/Quote]

这跟7楼是一回事。
老黎 2010-06-24
  • 打赏
  • 举报
回复
这个可以帮到你

--使用sp_help 获得所有列名
sp_help 表名

feilniu 2010-06-24
  • 打赏
  • 举报
回复
SQL Server Management Studio支持自定义快捷键:工具->选项->键盘

把Ctrl+9定义为:

sp_executesql N'IF OBJECT_ID(@tablename) IS NOT NULL EXEC(N''SELECT STUFF((SELECT '''',''''+name FROM sys.columns WHERE object_id = OBJECT_ID(''''''+@tablename+'''''') FOR XML PATH('''''''')),1,1,'''''''')'')',N'@tablename nvarchar(100)',

双击表名,按Ctrl+9即可生成表的各个字段,用逗号分隔。

附送两个快捷键:

--Ctrl+F1:
sp_executesql N'IF OBJECT_ID(@tablename) IS NOT NULL EXEC(N''SELECT TOP(''+@n+N'') * FROM ''+@tablename)',N'@tablename nvarchar(100),@n int=100',
--功能:查询表的前100行数据。
--Ctrl+0:
sp_executesql N'SELECT * FROM sys.objects WHERE type IN (''U'',''V'',''P'',''FN'') AND name LIKE ''%''+@keyword+''%'' ORDER BY type,name',N'@keyword nvarchar(50)',
--功能:根据选定的部分字符查找表、视图、存储过程、函数。

claro 2010-06-24
  • 打赏
  • 举报
回复
(1)有sa帐号和密码,登录MSMS对象管理器,打开table右键select 生成脚本,去掉ID不就得了。
(2)没有SA帐号和密码,在SQL2005和2008查询结果中显示列名的一种方法
http://blog.csdn.net/claro/archive/2008/11/13/3292508.aspx
feilniu 2010-06-24
  • 打赏
  • 举报
回复
双击表名,按Alt+F1;
复制所有列名;
选择需要的列名组成查询语句。
Andy__Huang 2010-06-24
  • 打赏
  • 举报
回复
declare @s varchar(8000)
set @s=''
select @s=@s+name+',' from syscolumns
where id=object_id('表名') and name<>'id'
order by colid
print left(@s,len(@s)-1)

把上面得到的结果建一个视图,以后从视图中select出来,如果不这样做,每次select语句后都写字段名太麻烦了

中国风 2010-06-24
  • 打赏
  • 举报
回复
DECLARE @s NVARCHAR(4000)
SET @s=''
SELECT @s=@s+','+QUOTENAME(Name) FROM syscolumns WHERE ID=OBJECT_ID('表名') AND Name NOT IN('ID') ORDER BY colid
SET @s=STUFF(@s,1,1,'')
EXEC('select '+@s+' from 表名')
bancxc 2010-06-24
  • 打赏
  • 举报
回复
没有这样的命令 你就一个一个敲吧
中国风 2010-06-24
  • 打赏
  • 举报
回复
只能用動態調用syscolumns
albert_sky 2010-06-24
  • 打赏
  • 举报
回复

select index,name
水族杰纶 2010-06-24
  • 打赏
  • 举报
回复
除了借助系统表动态拼接
没什么好方法

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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