Announcement

Collapse
No announcement yet.

wie Abfrage mit n LIKE-Werten?

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

  • wie Abfrage mit n LIKE-Werten?

    Hallo,

    ich habe eine temporäre Tabelle Tab_A mit n Sätzen darin. Ich würde gern eine andere Tabelle Tab_B nach diesen Sätzen durchsuchen, allerdings mittels 'LIKE'. Wie macht man sowas?
    Mit dem MS SQL Server käme man hier vermutlich mittels dynamischem SQL weiter, aber gibt es auch unter MySQL eine Möglichkeit, das halbwegs elegant zu machen? Ich könnte mit einem Cursor durch Tab_A gehen und mir einen String zusammenbasteln, der die WHERE-Klausel mit allen n LIKE-Kriterien oder meinetwegen das ganze SELECT-Statement enthält, aber wie dann weiter?

    Weiß jemand Rat?


    Dave

  • #2
    Sowas funktioniert nicht, oder?

    [highlight=sql]
    SELECT *
    FROM tabelle t
    INNER JOIN Tab_A t_a ON t.vergleichsFel LIKE dt_a.likeFeld
    [/highlight]

    Bin mir nicht sicher ob sowas klappt aber man könnts mal probieren was da passiert

    Edit:
    Das funktioniert in Oracle
    [highlight=sql]
    with tabelle as
    (
    SELECT 'test' as feld FROM DUAL
    UNION ALL
    SELECT 'test2'as feld FROM DUAL
    UNION ALL
    SELECT 'test3' as feld FROM DUAL
    UNION ALL
    SELECT 'te2st' as feld FROM DUAL
    ),
    tab_a as
    (
    SELECT '%2%' as likeFeld FROM DUAL
    )
    SELECT *
    FROm tabelle t
    INNER JOIN tab_a t_a ON t.feld LIKE t_a.likeFeld
    [/highlight]

    Ergebnis:

    Code:
    FELD  LIKEFELD 
    ----- -------- 
    test2 %2%      
    te2st %2%
    Zuletzt editiert von fanderlf; 07.03.2011, 14:01.

    Comment


    • #3
      Mittels CONCAT() die LIKE-Bedingung erstellen?

      Code:
      WHERE Feld1 LIKE CONCAT('%', Feld2, '%')
      Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

      Comment


      • #4
        Ja, die Lösung von fanderlf funktioniert tatsächlich, das hätte ich nicht gedacht. Vielen Dank für den Tip. Ich habe, um in dem Beispiel zu bleiben, den JOIN mit "t.Feld LIKE CONCAT('%', t_a.likeFeld, '%')" gemacht, und es scheint zu funktionieren. Prima, Danke.

        dibo33, mit einer normalen WHERE-Bedingung wäre es mMn nicht gegangen, da ich eben n Sätze in der temp. Tabelle habe und ich nicht weiß, wieviele es eben genau sind (bzw. das variiert). Aber Danke dennoch für den Tip ...

        Danke Euch beiden ...


        Dave

        Comment


        • #5
          Ich wussts auch nicht einfach ausprobieren... nicht zu viel spekulieren

          Comment

          Working...
          X