C# 如何使用n-1列名编写Select查询
在我的数据库表中C# 如何使用n-1列名编写Select查询,c#,asp.net,sql,sql-server-2008,C#,Asp.net,Sql,Sql Server 2008,在我的数据库表中 sr_no FID DOJMU DOJMCIS Designation UpdateDate 我必须编写一个select命令,这样我就应该选择除sr_no之外的所有字段。我知道我们可以将其设置为select FID、DOJMU、DOJMCIS、DESIGTION、UpdateDate from TableName。但对我来说,我需要查询为select*from table name,但它应该排除一个列名。这可能吗 由于我需要在Casp.net中用c执行此查询,因此
sr_no
FID
DOJMU
DOJMCIS
Designation
UpdateDate
我必须编写一个select命令,这样我就应该选择除sr_no之外的所有字段。我知道我们可以将其设置为select FID、DOJMU、DOJMCIS、DESIGTION、UpdateDate from TableName。但对我来说,我需要查询为select*from table name,但它应该排除一个列名。这可能吗
由于我需要在Casp.net中用c执行此查询,因此我有以下代码
select p.Name,m.* from Publication_det m INNER JOIN Personal_det p ON m.FID= p.FID
其中m.updateDate在@Start和@End之间
在这里,您可以看到m.*表示上面的select*from表名,因此在执行sr_no时也会显示,因此我需要一个使用n-1列名的解决方案。您可以使用动态SQL查询来实现 例如:
DECLARE @cols AS VARCHAR(MAX)
DECLARE @SQL AS VARCHAR(MAX)
SET @cols = STUFF
(
(
SELECT distinct ',' + QUOTENAME([name])
FROM syscolumns
WHERE id =
(
SELECT id
FROM sysobjects
WHERE type = 'V'
AND [Name] = 'TableName'
)
AND [name] not in ('sr_no')--you may define more names here
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1
,1
,''
)
SET @SQL = 'SELECT ' + @cols + ' FROM TableName'
EXEC(@SQL)
没有标准的SQL方法可以使用select来完成这项工作,要么必须列出它们,要么全部选择它们。在TSQL中,动态查询可能会给出您所要求的结果,但其复杂性比常规选择要高得多
如果它或多或少是一个静态查询,您可以为它创建一个视图
CREATE VIEW test_view AS
SELECT FID,DOJMU,DOJMCIS,Designation,UpdateDate
FROM test;
然后是一个普通的
SELECT * FROM test_view;
…将获得所需的列。您有两个选项: 1声明@tablename varchar50='submission\u mst'
select 'Select '+
stuff
((
select ', '+ t.name
from (
select name ,[object_id] from sys.columns where object_id in (select object_id from sys.tables where name =@tablename)
and name <>'MGAName'
)t
for xml path ('')),1,1,'') + ' from'+ @tablename
Select*从表中选择全部-我认为除了为它编写单独的列名之外,没有其他方法
SELECT * INTO #TempTable FROM tablename
ALTER TABLE #TempTable DROP COLUMN columnname
SELECT * FROM #TempTable
DROP TABLE #TempTable