Come selezionare i nomi di colonna specifici in SQL Server

Qui è la mia domanda precedente su come scorrere una stringa in SQL Server:

Ora come faccio a selezionare in modo specifico i nomi di colonna?
ecco il mio codice per la selezione colonne:

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'

Ecco l’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

Questo l’output voglio quando la selezione di specifici nomi di colonna:

Field 1: Asset_No
Field 2: AssetCategory
Field 3: AssetClassification
Field 4: PurchaseType
Field 5: Department
Field 6: RespPerson
Field 7: Status
InformationsquelleAutor | 2013-02-27

 

3 Replies
  1. 3

    Come circa usando NOT IN che è possibile utilizzare sul WHERE clausola per specificare un’altra condizione.

    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
    • Ah sì, signore, posso utilizzare anche questo, mi dispiace sono un principiante, grazie sir 🙂
  2. 1

    A meno che mi manca qualcosa, si può semplicemente utilizzare un WHERE clausola di esclusione della colonna(s) se non si desidera:

    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'

    Se si dispone di più colonne, quindi è possibile utilizzare NOT IN ('Location', 'etc')

    • Sì ho dimenticato questo uso, perché ho pensato che non funziona, perché la prima volta che l’ho provato non ci sono errori, forse solo un errore di sintassi, comunque grazie sir 🙂
    • sei il benvenuto, felice di aiutarti! 🙂
  3. 0

    Consiglia di sys.columns invece di INFORMATION_SCHEMA (ecco perché).

    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

Lascia un commento