Voici ma question précédente sur comment répéter une string dans SQL Server:
Maintenant, comment puis-je sélectionner spécifiquement les noms de colonnes? voici mon code pour sélectionner les colonnes:
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'
Voici la sortie:
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
C'est la sortie que je veux lors de la sélection de noms de colonnes spécifiques:
Field 1: Asset_No Field 2: AssetCategory Field 3: AssetClassification Field 4: PurchaseType Field 5: Department Field 6: RespPerson Field 7: Status
Que diriez-vous d'utiliser NOT IN
que vous pouvez utiliser sur la clause WHERE
pour spécifier une autre condition.
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
À less de manquer quelque chose, vous pouvez simplement utiliser une clause WHERE
pour exclure les colonnes que vous ne voulez pas:
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'
Si vous avez plusieurs colonnes, vous pouvez utiliser NOT IN ('Location', 'etc')
Recommandz sys.columns
au lieu de INFORMATION_SCHEMA
( voici pourquoi ).
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