Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Substr Problem / Vergleich mit anderer Spalte

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Substr Problem / Vergleich mit anderer Spalte

    Moin,
    da isser neu und hat gleich das erste Problem

    Eckdaten:
    Oracle DB, SQL Querry

    Mein Problem:
    Im u.g. Select-Statement beziehe ich mich auf zwei Tabellen. In beiden Tabellen möchte ich nun die Inhalte vergleichen, die aber verschieden sind.
    Die Spaltennamen sind zwar gleich, aber der Inhalt ist bei der ersten Tab. z.B. (request) unbar und in der zweiten steht nur ein (barring) U, was faktisch dasselbe bedeutet.

    Meine Lösung bisher:

    SELECT *
    FROM barring bar
    INNER JOIN request req
    ON (req.customer_id = bar.customer_id
    and bar.barring_action = Substr (req.barring_action,1,1)

    Das Ergebniss der Abfrage ist leer, obwohl für den Kunden, diese Vergleiche stimmen und Einträge vorhanden sind.

    Mit Substr habe ich mir nur den ersten String aus meiner "Unbar"-Spalte generiert. Ausgabe "u". Es erfolgt aber keine Ausgabe, evtl weil ein grosses U in der anderen Tabelle steht? Dies sollte auch mit den anderen Werten fkt. z.B. bar und B.

    Über Lösungsalternativen wäre ich sehr dankbar.

  • #2
    LIKE verwenden?
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      bleibt er leider auch ohne ergebnis, obwohl beide Tabellen jeweils für einen bestimmten Kunden (also bar.customer_id = mein.TestKunde) jeweils ein U (barring) und gekürztes u (Request) vorhanden sind

      and bar.barring_action like Substr (req.barring_action,1,1)
      and bar.customer_id = 10000001

      Spalten sind bei barring mit Char definiert
      und bei Request mit Varchar2 evtl ne Typumwandlung starten?

      Kommentar


      • #4
        Wo kommt den plötzlich das and bar.customer_id = 10000001 her, das stand nicht im Ausgangspost...

        Auf der Grundlage behaupte ich einfach mal, der Fehler steckt woanders!
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          Also wenn das Problem ist, 'u' und 'U' zu vergleichen, hilft entweder eine andere Kollation auf den Spalten, um case insensitive zu arbeiten oder UPPER() bzw. LOWER()

          Ich gehe von MySQL aus, also keine Gewähr dass es bei Oracle genauso funktioniert.
          [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
          [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

          Kommentar


          • #6
            Also habe die Lösung gefunden und möchte Sie hier noch preisgeben

            Erste Problem war das Oracle kein RAW Varchar2 auf Char selbst vergleichen kann ohne Type-casting. Muss man erst umwandeln....wusste ich auch noch nicht, da dies in SQL meines Erachtens sonst kein Prob darstellt.

            Die ganze Sache sieht nun so aus:

            SELECT *
            FROM barring bar
            INNER JOIN request req
            ON (req.customer_id = bar.customer_id
            and bar.barring_action = decode(req.barring_action, 'unbar', 'U', 'bar', 'B','parbar','P'))

            Habs vorher so versucht, war aber nur bedingt erfolgreich (String beschneiden und dann zu casten):
            cast (Substr (req.barring_action,1,1) as char) as Sub

            Thx for your help

            Kommentar

            Lädt...
            X