Announcement

Collapse
No announcement yet.

Nur integer-taugliche Werte aus Tabelle filtern

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

  • Nur integer-taugliche Werte aus Tabelle filtern

    Hallo,

    ich habe folgende Problemstellung für die es ja vielleicht eine Lösung gibt. In einer Tabelle am SQLServer 2005 stehen z.B. folgende Werte:

    A123
    3456
    7890
    9256
    1C37

    Ich möchte nun mit einer SQL-Abfrage nur den höchsten Zahlenwert aus der Tabelle auslesen. Also im Beispielfall wäre das "9256".
    Ist das möglich oder muss ich jeden Datensatz lesen und dann mit einer Routine prüfen, ob das ein gültiger Zahlenwert ist ?

    Danke für eine erhellende Antwort
    Holger

  • #2
    Hallo Holger,

    hier ein Lösungsvorschlag von mir:

    Create table #a (bla varchar(100))
    --
    insert into #a values ('A123')
    insert into #a values ('3456')
    insert into #a values ('7890')
    insert into #a values ('9256')
    insert into #a values ('1C37')
    --
    select max(cast(bla as int)) as MaxBla
    from #a
    where isnumeric(bla) = 1

    Viele Grüße und schöne Feiertage
    Ola

    Comment


    • #3
      Hallo Olaf,

      das ist völlig genial... ich hatte schon eine andere Lösung in Betracht gezogen, aber Deine Idee ist natürlich wesentlich schneller...
      Eine Frage habe ich dazu noch:

      Kennt auch der SQLServer 2000 schon "isnumeric" ?
      Ich selbst habe einen 2005er, da läuft das total prima...

      Vielen Dank und ebenfalls schöne "ruhige" Feiertage.
      Holge

      Comment


      • #4
        Hallo Holger,

        ja, auch der SQL-Server 2000 kennt bereits isnumeric(). Zur Prüfung von Datum und Zeit gibt es auch noch isdate(). Bei spezielleren Mustern kommt man auch mit LIKE gut klar. In Deinem Fall wäre auch dies gegangen:
        ...
        where bla like '[0-9][0-9][0-9][0-9]'

        Viel Spaß noch
        Ola

        Comment


        • #5
          Hallo Olaf,
          nochmals vielen Dank für die schnelle Antwort.
          Bei mir gibt es leider kein spezielles Muster... lediglich in meinem Beispiel waren die alle von der Länge 4...
          Ich glaube ich muss mich mal intensivst mit den Möglichkeiten der SQL-Syntax auseinandersetzen...
          Hast Du einen Buchtip für mich oder reicht die MSDN ?

          Viele Grüße
          Holge

          Comment


          • #6
            Hallo Holger,

            ich finde die Online-Hilfe, auch schon vom 2000er, eigentlich sehr gut. Über eine beliebige Funktion z.B. substring() als Transact-SQL Befehl gelangst Du schnell über "siehe auch" zu "Zeichenfolgenfunktionen" und von dort zu "Funktionen (Transact-SQL)". Dort hast Du einen sehr schnellen Überblick. Was man wie wann am besten einsetzt, das macht dann natürlich auch die Erfahrung...
            Als Buch habe ich mir mal den Inside SQL-Server 2000 von der MicrosoftPress geleistet. Das Ding ist echt der Hammer, weil dort auch richtig in die Tiefen der Interna des SQL-Servers vorgedrungen wird. Stellenweise werden die einzelenen Bits einer Speicherseite aufgeschlüsselt usw., das hört sich krass an (ist es auch), aber es führt auch zu einem sehr umfassenden Verständnis der gesamten Technik (wie richtig Indexe anlegen, warum StoredProcedures usw. ). Mir hat das wirklich sehr geholfen.
            Natürlich sind auch die Bücher des Herrn Kosch im Zusammenhang mit ADO.NET und einer dreischichtigen Architektur immer sehr zu empfehlen.

            Schöne Tage noch
            Ola

            Comment


            • #7
              Hallo Olaf,
              ich glaube ich schenke mir mal das "Inside"-Buch zu Weihnachten :-)
              Die Online-Hilfe ist sicher klasse, wenn man mal nicht weiter weiß. Was mir aber, wie Du ja gesehen hast, fehlt ist das Wissen der Möglichkeiten, die die SQL-Syntax überhaupt für solche Fragestellungen wie meine bietet.
              Die Bücher von Andreas K. sind sicher immer eine gute Wahl, da gebe ich Dir recht, einige davon stehen bei mir im Regal...

              Vielen Dank und viele Grüße
              Holge

              Comment

              Working...
              X