jm: SQL-Befehl

Hallo,

ich suche einen SQL-Befehl womit ich aus einem Datensatz, wo mehrere Wörter drin stehen können, über die Suchbedingung nach einem Wort suchen kann. Bsp.: DS1(Disponent, Einsatzleiter), DS2(Disponent), ich suche nun alle DS wo 'Disponent' enthalten ist.
Meine Idee war:
SELECT * FROM tabelle WHERE taet='*Disponent*';

Das funktioniert aber nicht. Kann mir jemand den richtigen SQL-Befehl sagen. Vielen Dank.

Viele Grüße
jm

  1. Hello,

    Meine Idee war:
    SELECT * FROM tabelle WHERE taet='*Disponent*';

    Das Gleichheitszeichen steht für den genauen (aber meistens case insensitive) Vergleich.
    Einen Teilstring-Match kannst Du mit

    where taet like '*Disponent*'

    oder mit

    where locate('Disponent',taet) > 0

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hallo Tom,

      where taet like '*Disponent*'

      oder mit

      where locate('Disponent',taet) > 0

      leider funktionieren dein Vorschläge nicht bei mir.
      Bei der like-Variante (SELECT * FROM tabelle WHERE taet LIKE '*Disponent*') steht im Resultat garkein DS mehr drin. Und bei der locate-Variante kommen Fehlermeldungen. Kann es daran liegen, dass ich mit einer InterBase-DB arbeite und nicht bspw. mit mySQL? Hatte schon öfters, dass einige Befehle nicht funktionieren.

      Viele Grüße
      jm

      1. Hello,

        where taet like '*Disponent*'

        oder mit

        where locate('Disponent',taet) > 0

        leider funktionieren dein Vorschläge nicht bei mir.
        Bei der like-Variante (SELECT * FROM tabelle WHERE taet LIKE '*Disponent*') steht im Resultat garkein DS mehr drin. Und bei der locate-Variante kommen Fehlermeldungen. Kann es daran liegen, dass ich mit einer InterBase-DB arbeite und nicht bspw. mit mySQL? Hatte schon öfters, dass einige Befehle nicht funktionieren.

        Ja.

        Da müsste man nun die Fähigl´keit zur Transformation (oder heißt das nicht so?) haben. Also die Anregungen nur als Idee auffasssen und mit den vorhandenen Ggebenheiten abgleichen, also analoge Befehle und Funktionen suchen.

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
    2. Hi,

      Das Gleichheitszeichen steht für den genauen (aber meistens case insensitive) Vergleich.
      Einen Teilstring-Match kannst Du mit

      where taet like '*Disponent*'

      Dann bekommt er aber nur die Datensätze, wo taet "*Disponent*" heißt und nicht z.B. auch "LKW-Disponent", "Paketdisponent" und "Megadisponentenfuzzi"...

      Wildcards bei LIKE sind % für kein oder mehrere beliebige Zeichen und _ für genau ein beliebiges Zeichen.

      Der Yeti

      --
      Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
      Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
      Und bin so klug als wie zuvor!
      sh:( fo:| ch:? rl:? br:< n4:& ie:( mo:| va:| de:[ zu:) fl:| ss:) ls:< js:|
      [Link:http://community.de.selfhtml.org/fanprojekte/selfcode.htm]
      1. Hi,

        Wildcards bei LIKE sind % für kein oder mehrere beliebige Zeichen und _ für genau ein beliebiges Zeichen.

        Kommt auf das RDBMS an, bei MS Access ist die Wildcard "*".

        Melanie

        1. Hi,

          Kommt auf das RDBMS an, bei MS Access ist die Wildcard "*".

          Eckschiss zähle ich nicht zu den RDBMS, das ist ein Excel, was aussieht, wie eine Datenbank ... *kotzwürg*
          Außerdem kommt es doch hoffentlich auf das verwendete SQL an (was natürlich meistens schon Unterschiede je nach DBMS hat).

          Aber im Grunde hast du recht, ich war einfach "per default" von MySQL ausgegangen, aber da jm kein spezielles *SQL angegeben hat war diese Annahme erstmal falsch. Da mein Tipp aber funktionierte benutzt er wohl zumindest eine SQL-(Ab)art, bei der % und _ des Rätsels Lösung sind.

          Der Yeti

          --
          Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
          Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
          Und bin so klug als wie zuvor!
          sh:( fo:| ch:? rl:? br:< n4:& ie:( mo:| va:| de:[ zu:) fl:| ss:) ls:< js:|
          [Link:http://community.de.selfhtml.org/fanprojekte/selfcode.htm]
          1. Hi,

            Nu lass mich doch auch mal Korinthenkacker spielen ;-)

            Es irritiert mich halt immer etwas wenn immer automatisch angenommen wird dass die Welt sich nur um PHP und MySQL dreht (wobei ich nichts gegen genannte Technologien habe, und MS Access auf Armlaenge halte).

            Und so ziemlich alle sql-faehigen Datenbanksysteme mit denen ich bisher zu tun hatte, hatten halt ihre eigene Auspraegung von SQL (wenn auch nicht unbedingt in Bezug auf LIKE).

            Melanie

            1. Hi,

              Nu lass mich doch auch mal Korinthenkacker spielen ;-)

              War ja auch richtig. ;-)

              Es irritiert mich halt immer etwas wenn immer automatisch angenommen wird dass die Welt sich nur um PHP und MySQL dreht (wobei ich nichts gegen genannte Technologien habe, und MS Access auf Armlaenge halte).

              Habe auch bei C# und MSSQL keine anderen Wildcards kennengelernt. ;-)
              Aber im Grunde hast du ja recht, wie gesagt. Meines Erachtens ist es nämlich in ANSI-SQL schon so festgelegt (Irrtum vorbehalten).

              Und so ziemlich alle sql-faehigen Datenbanksysteme mit denen ich bisher zu tun hatte, hatten halt ihre eigene Auspraegung von SQL (wenn auch nicht unbedingt in Bezug auf LIKE).

              Jap.

              Der Yeti

              --
              Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
              Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
              Und bin so klug als wie zuvor!
              sh:( fo:| ch:? rl:? br:< n4:& ie:( mo:| va:| de:[ zu:) fl:| ss:) ls:< js:|
              [Link:http://community.de.selfhtml.org/fanprojekte/selfcode.htm]
          2. Hello,

            Kommt auf das RDBMS an, bei MS Access ist die Wildcard "*".

            Eckschiss zähle ich nicht zu den RDBMS, das ist ein Excel, was aussieht, wie eine Datenbank ... *kotzwürg*

            Also ACCESS ist nicht MS-SQL-Server. Der ist 'geklaut' von Sysbase und leider nicht mit der Intelligenz von Sybase weiterentwickelt worden. ACCESS benutzt üblicherweise die JET-Engine, die auch nicht bei Microsoft entwickelt wurde und, soweit sie von den ursprünglichen Entwicklern stammt, einfach genial gut ist.

            Schließlich ist die JET-Engine eine verteilte File-Server-Applikation.

            Harzliche Grüße aus http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
      2. Hello,

        Einen Teilstring-Match kannst Du mit

        where taet like '*Disponent*'

        Dann bekommt er aber nur die Datensätze, wo taet "*Disponent*" heißt und nicht z.B. auch "LKW-Disponent", "Paketdisponent" und "Megadisponentenfuzzi"...

        Jaaaaaaaaa!
        Natürlich steth meistens das '%' als Jikerzeichen in SQL.
        Ich wollte auch noch den Link zur MySQL-Page setzen, aber da klingelte das Telebimmel und ich wurde zur Besprechnung gerufen. Und Kunden, die mit Auftrag drohen, gehen heutzutage eben einfach vor ;-)

        Bisschen mitdenken muss man natürlich auch noch...

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
  2. Hi,

    Meine Idee war:
    SELECT * FROM tabelle WHERE taet='*Disponent*';

    Das funktioniert aber nicht. Kann mir jemand den richtigen SQL-Befehl sagen. Vielen Dank.

    Meine Idee ist:
    SELECT * FROM tabelle WHERE taet LIKE '%Disponent%';
    Siehe [Link:http://dev.mysql.com/doc/mysql/de/Pattern_matching.html].

    Der Yeti

    --
    Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
    Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
    Und bin so klug als wie zuvor!
    sh:( fo:| ch:? rl:? br:< n4:& ie:( mo:| va:| de:[ zu:) fl:| ss:) ls:< js:|
    [Link:http://community.de.selfhtml.org/fanprojekte/selfcode.htm]
    1. Hallo Yeti,

      SELECT * FROM tabelle WHERE taet LIKE '%Disponent%';

      So hat es geklappt.

      Vielen Dank und viele Grüße
      jm