Πώς να ελέγξετε αν υπάρχει μια στήλη σε έναν πίνακα του SQL Server;

Πρέπει να προσθέσω μια συγκεκριμένη στήλη αν δεν υπάρχει. Έχω κάτι σαν το ακόλουθο, αλλά πάντα επιστρέφει false:

IF EXISTS(SELECT *
          FROM   INFORMATION_SCHEMA.COLUMNS
          WHERE  TABLE_NAME = 'myTableName'
                 AND COLUMN_NAME = 'myColumnName') 

Πώς μπορώ να ελέγξω αν μια στήλη υπάρχει σε έναν πίνακα της βάσης δεδομένων του SQL Server;

Προσαρμόστε τα παρακάτω για να ταιριάζουν στις δικές σας απαιτήσεις:

if not exists (select
                     column_name
               from
                     INFORMATION_SCHEMA.columns
               where
                     table_name = 'MyTable'
                     and column_name = 'MyColumn')
    alter table MyTable add MyColumn int

Επεξεργασία για την αντιμετώπιση της επεξεργασίας της ερώτησης: Αυτό θα πρέπει να δουλέψει - ρίξτε μια προσεκτική ματιά στον κώδικά σας για ηλίθια λάθη. ρωτάτε για παράδειγμα INFORMATION_SCHEMA στην ίδια βάση δεδομένων στην οποία εφαρμόζεται η εισαγωγή σας; Μήπως έχετε κάποιο τυπογραφικό λάθος στο όνομα του πίνακα/στήλης σας σε κάποια από τις δύο δηλώσεις;

Σχόλια (3)

Δοκιμάστε αυτό...

IF NOT EXISTS(
  SELECT TOP 1 1
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE 
    [TABLE_NAME] = 'Employees'
    AND [COLUMN_NAME] = 'EmployeeID')
BEGIN
  ALTER TABLE [Employees]
    ADD [EmployeeID] INT NULL
END
Σχόλια (4)

Πρώτα ελέγξτε αν ο συνδυασμός table/column(id/name) υπάρχει στο dbo.syscolumns (ένας εσωτερικός πίνακας του SQL Server που περιέχει ορισμούς πεδίων), και αν όχι, εκδώστε το κατάλληλο ερώτημα ALTER TABLE για να τον προσθέσετε. Για παράδειγμα:

IF NOT EXISTS ( SELECT  *
            FROM    syscolumns
            WHERE   id = OBJECT_ID('Client')
                    AND name = 'Name' ) 
ALTER TABLE Client
ADD Name VARCHAR(64) NULL
Σχόλια (0)