Zum Inhalt springen

Select *+???


Jana_

Empfohlene Beiträge

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...