Announcement

Collapse
No announcement yet.

numeric platzhalter in mssql

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

  • numeric platzhalter in mssql

    Ich habe das Problem, dass ich über ein C# Programm meine Tabelle in MSSQL abfragen möchte.
    Zusätzlich soll ich über Textfelder genaue Kriterien eingeben können die durch Variablen dann in die WHERE-Klausel eingetragen werden.
    Nun habe ich es so eingerichtet, dass falls in den Textfeldern nichts steht er automatisch in die Variablen ein "%" einträgt damit er alle Datensätze dementsprechend ausgibt. Bei den varchar-Variablen funktioniert das wunderbar. Doch leider habe ich auch eine ID als Primärschlüssel von Datentyp Numeric.
    Sprich ich brauche einen solchen Platzhalter für numeric Variablen da ich ein % nicht in einen numeric speichern kann. Ich möchte aber auch ungerne die ID in einen varchar ändern.
    Weiss jemand eine Alternative? Vielen Dank im vorraus

  • #2
    Hallo Zervez,

    kann kann numerische Felder nicht mit
    WHERE NumFeld LIKE %
    vergleichen; das geht einfach nicht - No Way.
    Eine Zahl ist immer exakt diese eine Zahl und nicht ungefähr irgendwas oder so ähnliches.

    Da musst Du einfach in Deinem Programm eine Fallunterscheidung machen; wenn ein Wert angegeben wurde, dann "Feld = " + Wert; sonst lässt Du das Filterkriterium einfacg weg.
    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


    • #3
      Es gibt auch keinen Platzhalter dafür oder etwas ähnliches womit ich ihm sage das es egal ist was drin steht? Ich habe es auch schon mit NOT NULL probiert, leider auch ohne Erfolg...

      Comment


      • #4
        Nein, und noch einmal:
        Eine Zahl ist immer exakt diese eine Zahl und nicht ungefähr irgendwas oder so ähnliches
        NULL ist noch mal etwas anderes; entweder es ein Wert definiert oder nicht; dann ist er NULL (sofern das Feld überhaupt Nullable ist).
        Und auch bei CHAR Felder ist es eher Sinn & Zweckfrei / inperformant, wenn man wahllos auf LIKE prüft, wo es unnötig ist. Man kann da nur hoffen, das der MS SQL das weg optimert (noch nicht getestet).

        Aber wo ist das Problem?
        Tausende Programmierer (including me) haben kein Problem damit, im Programm diese kleine Fallunterscheidung hin zu bekommen; warum Du nicht?
        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


        • #5
          Ok Danke, das habe ich soweit verstanden. Vielleicht noch einmal eine andere Frage...
          Ist es möglich nur den zweiten Datensatz auszugeben ohne dabei in einer WHERE-Klausel nach irgendwelchen Kriterien zu überprüfen?
          Habe dazu nichts gefunden...
          Vielen Dank

          Comment


          • #6
            Man kann zwar mit der
            SELECT TOP 5
            sich nur die ersten 5 Datensätze zurück liefern lassen; aber nur ab den x-ten Datensatz geht nicht.

            Dafür gibt es aber z.B. bei ADODB die Methode
            ADODB.Recordset.MoveNext
            um zum nächsten = 2-ten zu gehen; sofern es überhaupt einen 1-ten gibt.
            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

            Working...
            X