WernerK: SQL Select Spaltenname dynamisch

Beitrag lesen

Hallo

In einer SQL Server Tabelle DOCUMENTS gibt es die Spalten German und English. Eine Webanwendung macht einen Select auf diese Tabelle aber abhängig von der gewählten Sprache des Anwenders. Wenn er nun z.b. auf Spanisch eingestellt hat, kommt eine SQL Fehlermeldung "Invalid column name 'spain'"

Könnte man vielleicht den Spaltennamen so wählen, dass wenn eine andere Sprache als German oder English gewählt wurde, immer English genommen wird im Select? Ich habe dazu ein SQL Snippet gefunden wie man die Spalten prüfen könnte.

Im Beispiel unten würde auf "spain" geprüft. Das gibt es aber nicht und dann soll der Select mit English gemacht werden. Leider geht das mit dem IF und ELSE und den Selects dazwischen so nicht.

Wie könnte man das erreichen?

IF EXISTS (SELECT * FROM Information_Schema.Columns WHERE Table_Name = 'DOCUMENTS' AND Column_Name = 'spain')
PRINT 'Spalte <SpaltenName> existiert in Tabelle ';
SELECT spain,  [ID] FROM [DOCUMENTS]
ELSE
PRINT 'Spalte existiert nicht';
SELECT ENGLISH,  [ID] FROM [DOCUMENTS]

Gruss

Werner