Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo,

ich arbeite mit ms sql 2005. Gibt es eine Möglichkeit alle Spalten einer Tabelle zusammenzufassen? Problem dabei, ich kenne weder Namen der Spalten noch wieviele es sind.

Ich will also alle Spalten konkatieren. Wenns nur 2 sind gehts ja ganz einfach über das +.

(SELECT Name + ' ' + Vorname FROM tbl_Namen)

Wie aber nun wenn ich wie gesagt weder Namen noch Anzahl der Spalten kenne?

Geschrieben

Problem dabei, ich kenne weder Namen der Spalten noch wieviele es sind.

Bei dieser Variante wirst Du auch Probleme mit den Datentypen bekommen.

Ist hier ein int-Wert oder ähnliches dabei wird es nicht funktionieren. Es sei denn Du wandelst ihn explizit in einen kompatiblen Datentyp um.

Wenn Du nur Spaltenname und deren Typ anhand des Tabellennamen ermitteln möchtest, könntest Du Systemsichten bemühen:


SELECT	so.Name AS Tabelle, 

		sc.name AS Feld,

		st.[name] AS Datentyp

FROM sys.objects so

LEFT JOIN sys.columns sc ON so.object_id = sc.object_id

LEFT JOIN sys.types st ON sc.system_type_id = st.system_type_id 

WHERE [type] = 'U'

AND st.system_type_id = st.user_type_id

AND so.[Name] = 'Mitarbeiter'

Aber wozu benötigst du eine derartige Konkatenierung der Feldwerte?

Vielleicht gibts da noch einen anderen Weg wenn Du das Ziel verrätst.

Gruß,

Thomas

Geschrieben

Ich verzichte mal darauf irgendwelche Diskussionen über den Sinn der Anforderung anzuzetteln und behaupte, dass es nur die Möglichkeit über dynamisches SQL, oder alternativ eine CLR Funktion gibt.

Mein Vorschlag ist folgender:

DECLARE @Table SYSNAME

DECLARE @cmd2 NVARCHAR(MAX)


SET @Table = 't1'


SELECT @cmd2 = N'SELECT ' + (STUFF((SELECT N' + '' '' + CAST(' + QUOTENAME(CAST(b.name AS SYSNAME)) + N' as VARCHAR(MAX))' FROM sysobjects a, syscolumns b WHERE a.type = 'U' AND a.id = b.id  AND a.name = @Table FOR XML PATH('')),1,6,'')) + N' FROM ' + QUOTENAME(@Table)

SELECT @cmd2


EXEC sp_executesql @cmd2

Man verzeihe mir die Verwendung der Aliase a und b :D

Goos

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...