Marco: SQL-Code (not like)

Hallo zusammen

ich habe folgenden SQL Code

"SELECT Count(T_MenuBar.id) AS [MenuAnzahl] FROM T_MenuBar WHERE (T_MenuBar.MenuSort) not Like '%_%'"

Ich möchte damit bezwecken, dass ich im Feld "MenuAnzahl" die Anzahl Datensätze bekomme in welchen im Feld "MenuSort" ein Underline enthalten ist.

Jedoch klappt es nicht.
Ich habe diesen Code in Access ausprobiert und er funktioniert. Jedoch auf meiner ASP Seite nicht...

Wer kann mir weiterhelfen?

Gruss Marco

  1. Hi,

    "SELECT Count(T_MenuBar.id) AS [MenuAnzahl] FROM T_MenuBar WHERE (T_MenuBar.MenuSort) not Like '%_%'"

    Ich habe ja nicht so viel Erfahrung mit SQL, aber welchen Zweck haben die %-Zeichen?

    Hilfreich wäre vielleicht auch noch die SQL-Fehlermeldung.

    Gruß Michi

    1. Hi,

      "SELECT Count(T_MenuBar.id) AS [MenuAnzahl] FROM T_MenuBar WHERE (T_MenuBar.MenuSort) not Like '%_%'"

      Ich habe ja nicht so viel Erfahrung mit SQL, aber welchen Zweck haben die %-Zeichen?

      % Steht für beliebig viele Zeichen z.B. "ha%" kann hallo hansi hannes... bedeuten

      Der "_" Unterstrich, bedeutet bei manchen DB's _ein_ beliebiges Zeichen.
      D.H. wenn du nach einem Unterstrich selektieren willst musst du ihn evtl. vorher maskieren z.B. "%\_%"

      Gruß

      ueps

      1. Hallo,

        Der "_" Unterstrich, bedeutet bei manchen DB's _ein_ beliebiges Zeichen.
        D.H. wenn du nach einem Unterstrich selektieren willst musst du ihn evtl. vorher maskieren z.B. "%\_%"

        Klingt logisch. Maskieren in SQL geht mit eckigen Klammern "%[_]%", naja, vielleicht geht auch obige Lsg.

        Gruss, Mel

        1. Hallo zusammen

          Danke für die Hilfreichen Tipps. Jedoch hat noch nichts geholfen. als nochmal

          eine Fehlermeldung kommt nicht. der SQL Code gibt einfach die Zahl "11" heraus. Jeodoch sollte es nur die Anzahl Datensätze in welchen KEIN Unterline erscheint zusammen zählen. -> Also 7.

          Ich habe beide Varianten mit dem Masieren auspobiert.

          MenuSort
          1
          2
          3
          5
          7
          4
          6
          2_1
          5_1
          5_2
          5_1_1

          Hallo,

          Der "_" Unterstrich, bedeutet bei manchen DB's _ein_ beliebiges Zeichen.
          D.H. wenn du nach einem Unterstrich selektieren willst musst du ihn evtl. vorher maskieren z.B. "%\_%"

          Klingt logisch. Maskieren in SQL geht mit eckigen Klammern "%[_]%", naja, vielleicht geht auch obige Lsg.

          Gruss, Mel

          1. Hallo Mel,

            probier mal ... WHERE NOT (spalte] LIKE [ausdruck]

            HTH

            Gruß Frank

            PS: Falls nicht, sag mal welche DB Du hast.

          2. Hallo

            eine Fehlermeldung kommt nicht. der SQL Code gibt einfach die Zahl "11" heraus. Jeodoch sollte es nur die Anzahl Datensätze in welchen KEIN Unterline erscheint zusammen zählen. -> Also 7.

            Er findet also alles, dh er maskiert nicht richtig da er _ immer noch als Wildcard fuer einen Character haelt. Hmmm. Sollte mit LIKE '%[_]%' eigentlich nicht passieren. Verwirrt.
            Bloede Frage, musst Du die Unterstriche verwenden, oder ginge es auch mit zB "-"??

            Gruss, Mel

    2. Hi,

      die Prozentzeichen sind Jokerzeichen (Wildcards) für Zeichenketten, ich würde die Eckige Klammer nach AS weglassen, wofür soll die denn überhaupt gut sein?

      Cu Rico

  2. "SELECT Count(T_MenuBar.id) AS [MenuAnzahl] FROM T_MenuBar WHERE (T_MenuBar.MenuSort) not Like '%_%'"
    Ich möchte damit bezwecken, dass ich im Feld "MenuAnzahl" die Anzahl Datensätze bekomme in welchen im Feld "MenuSort" ein Underline enthalten ist.

    Hi...

    soll ein "underline" enthalten sein oder nicht?
    Wenn nicht dann stimmt from optischen her das Statement

    ansonsten müsstest du das not vorm like weglassen

    ...

    kommt auf deiner Seite eine Fehlermeldung? Ja/Nein
    welche Fehlermeldung kommt? evt. das das Recordset BOF/EOF ist, dann hat u.Umst. die Aggregatfunktion den Wert NULL (nicht 0) gebracht. Das kann man abfangen mit isNull(rs("Feld"))
    Zwischen der Anzeige innerhalb Access und dem ADO-Zugriff bestehen einige Unterschiede.

    Zukünftig bitte auftretende Probleme konkreter beschreiben. "Klappt nicht" ist zum Tips geben etwas zu oberflächlich formuliert.

    Tschau,
    Frank