Announcement

Collapse
No announcement yet.

Anzahl Spalten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Anzahl Spalten

    Hallo,

    kann man mit einem Befehl die Anzahl der Spalten einer Tabelle ausgeben? Ich arbeite auf einem SQL-Server 2005.

    Ich würde gerne zwei Tabellen gegeneinander vergleichen, wobei als Ergebnis

    Tabelle1 = x Spalten
    Tabelle2 = y Spalten

    ausgegeben werden soll.

    Gibt's dafür einen netten Befehl?

    Danke & Grüße, Avhy.

  • #2
    Mit einem Trick:
    select * from <tabellenname> where 1=2
    und dann die Anzahl der Spalten durchiterieren.
    Alternativ wäre dann die Systemtabellen abzufragen (ist aber abhänig von DBMS-System)

    Comment


    • #3
      für MS-SQL 2005 also so:
      Code:
      SELECT	Obj.[Name] 	AS [ObjectName],
      	COUNT (*)		AS [Anzahl Spalten]
      FROM	Sys.SysObjects	AS Obj
      JOIN	Sys.SysColumns	AS Col ON Col.ID = Obj.ID
      WHERE	Obj.Xtype = 'U'
       AND	Obj.[Name] = <Tabellenname>
      GROUP BY Obj.[Name]

      Comment


      • #4
        Irgendwie stehe ich auf'm Schlauch -tut mir leid.

        An welchen Stellen muß ich da noch wie das Script an meine Datenbank anpassen?

        Hilfe!!!!

        Comment


        • #5
          Du musst nur <Tabellenname> durch 'DeineTabelle' ersetzen, also dieser Teil:

          AND Obj.[Name] = <Tabellenname>


          Olaf
          Olaf Helper

          <Blog> <Xing>
          * cogito ergo sum * errare humanum est * quote erat demonstrandum *
          Wenn ich denke, ist das ein Fehler und das beweise ich täglich

          Comment


          • #6
            Hatte ich mir gedacht. Also sieht mein Statement so aus:

            SELECT Obj.[Name] AS [ObjectName],
            COUNT (*) AS [Anzahl Spalten]
            FROM Sys.SysObjects AS Obj
            JOIN Sys.SysColumns AS Col ON Col.ID = Obj.ID
            WHERE Obj.Xtype = 'U'
            AND Obj.[Name] = <AENLIST>
            GROUP BY Obj.[Name]


            Und dazu meint der SQL-Server, wenn ich das Statement prüfe:

            Meldung 102, Ebene 15, Status 1, Zeile 6
            Falsche Syntax in der Nähe von '<'.


            Wenn ich das so formuliere:

            SELECT Obj.[Name] AS [ObjectName],
            COUNT (*) AS [Anzahl Spalten]
            FROM Sys.SysObjects AS Obj
            JOIN Sys.SysColumns AS Col ON Col.ID = Obj.ID
            WHERE Obj.Xtype = 'U'
            AND Obj.[Name] = AENLIST
            GROUP BY Obj.[Name]


            Dann ist das Ergebnis:

            Meldung 207, Ebene 16, Status 1, Zeile 6
            Ungültiger Spaltenname 'AENLIST'.

            Comment


            • #7
              Das war ein Missverständnis, der Tabellennamen ist ein String und den musst Du in einfach Anführungszeichen setzen, nicht in eckige Klammern:

              AND Obj.[Name] = 'AENLIST'

              Olaf
              Olaf Helper

              <Blog> <Xing>
              * cogito ergo sum * errare humanum est * quote erat demonstrandum *
              Wenn ich denke, ist das ein Fehler und das beweise ich täglich

              Comment


              • #8
                WOW! Kleine Ursache, große Wirkung

                Ein voll fettes Dankeschön für Eure Hilfe!

                Comment


                • #9
                  Hey! - So macht's natürlich (für meine Anwendung) noch mehr Sinn:

                  WHERE Obj.Xtype = 'U' AND Obj.[Name] in('TABELLE1','TABELLE2','TABELLE3')

                  Jippi!

                  Comment

                  Working...
                  X