Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用n-1列名编写Select查询_C#_Asp.net_Sql_Sql Server 2008 - Fatal编程技术网

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