简体   繁体   English

如何在SQL Server中选择特定的列名

[英]How to select specific column names in SQL Server

Here is my previous question on how to iterate a string in SQL Server: 这是我先前有关如何在SQL Server中迭代字符串的问题:

Now how can I specifically select column names? 现在如何特别选择列名称? here is my code for selecting columns: 这是我选择列的代码:

SELECT 'Field '+CAST(ROW_NUMBER() OVER (ORDER BY ordinal_position) AS varchar(5))+': ' + 
COLUMN_NAME
FROM information_schema.columns 
WHERE table_Name = 'SystemDefined' and table_schema = 'schemaAsset'

Here is the output: 这是输出:

Field 1: Asset_No
Field 2: AssetCategory
Field 3: AssetClassification
Field 4: PurchaseType
Field 5: Department
Field 6: RespPerson
Field 7: Status
Field 8: Location

This the output I want when selecting specific column names: 选择特定的列名称时,这是我想要的输出:

Field 1: Asset_No
Field 2: AssetCategory
Field 3: AssetClassification
Field 4: PurchaseType
Field 5: Department
Field 6: RespPerson
Field 7: Status

How about using NOT IN which you can use on the WHERE clause to specify for another condition. 如何使用可以在WHERE子句上使用的NOT IN来指定其他条件。

SELECT...
FROM..
WHERE  table_Name = 'SystemDefined' AND 
       table_schema = 'schemaAsset' AND
       COLUMN_NAME NOT IN ('Status',....) --  specify the list of names you
                                          -- don't want to show

Unless I am missing something, you can just use a WHERE clause to exclude the column(s) you do not want: 除非我丢失了某些内容,否则您可以使用WHERE子句排除不想要的列:

SELECT 'Field '
  + CAST(ROW_NUMBER() OVER (ORDER BY ordinal_position) AS varchar(5))+': ' 
  + COLUMN_NAME
FROM information_schema.columns 
WHERE table_Name = 'SystemDefined' 
  and table_schema = 'schemaAsset'
  and COLUMN_NAME <> 'Location'

If you have multiple columns, then you can use NOT IN ('Location', 'etc') 如果您有多列,则可以使用NOT IN ('Location', 'etc')

Recommend sys.columns instead of INFORMATION_SCHEMA ( here's why ). 推荐sys.columns而不是INFORMATION_SCHEMA这就是原因 )。

SELECT 'Column ' 
  + CONVERT(VARCHAR(5), ROW_NUMBER() OVER (ORDER BY column_id))
  + ': ' + name
FROM sys.columns
WHERE [object_id] = OBJECT_ID(N'schemaAsset.SystemDefined')
AND name NOT IN ('Location' /* , ... other columns ... */)
ORDER BY column_id; -- because you never know how SQL Server might order

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM