Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Select *+???

Empfohlene Antworten

Veröffentlicht

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?

Hallo,

ich würd sagen

select * from tbl_name;

mh... select * ist nunmal nicht das was ich will. ich will alles in nur einer einzigen spalte haben.

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

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.