Das Karat verankert den Ausdruck an den Anfang einer Zeichenfolge. Indem Sie die Buchstaben T, E, S & T in eckigen Klammern eingeben, suchen Sie barsju suggests für beliebig dieser Zeichen, nicht für die Zeichenfolge TEST.
Sie sagen, dass SRVC_CALL_DN
enthält die Zeichenfolge 'TEST CALL'
, aber Sie sagen nicht im String, wo. Sie sagen auch, dass Sie suchen, wo diese Zeichenfolge nicht übereinstimmen. Dies bedeutet, dass Sie not regexp_like(...
Wenn man all dies zusammen Ich glaube, Sie müssen verwenden möchten:
AND NOT REGEXP_LIKE (A.SRVC_CALL_DN, '^TEST[[:space:]]CALL')
Diese schließt jedes Spiel aus der Abfrage, wo die Zeichenfolge beginnt mit'TEST CALL'
. Wenn diese Zeichenfolge jedoch an einer beliebigen Position in der Spalte sein kann, müssen Sie das Karat entfernen - ^
.
Dies setzt auch voraus, dass die Zeichenfolge immer in Großbuchstaben ist. Wenn es in Groß- oder Kleinbuchstaben ist, müssen Sie es erneut ändern. Etwas wie folgt aus:
AND NOT REGEXP_LIKE (upper(A.SRVC_CALL_DN), '^TEST[[:space:]]CALL')
Durch oberen Gehäuse SRV_CALL_DN
Sie sicherstellen, dass Sie gehen zu immer passen, aber dafür sorgen, dass Ihre Abfrage keinen Index auf dieser Spalte verwenden. Ich würde mir über diesen speziellen Punkt keine Sorgen machen, da Abfragen für reguläre Ausdrücke bei der Verwendung von Indizes ohnehin ziemlich schlecht sein können und es so aussieht, als sei SRVC_CALL_ID
indexiert.
Auch wenn es kann nicht enthalten 'CALL'
müssen Sie dies entfernen. Am besten verwenden Sie reguläre Ausdrücke, um Ihr Übereinstimmungsmuster so explizit wie möglich zu machen. Also: 'CALL'
wenn du kannst.
Ah. Das klingt richtig .. Ich dachte, er würde^als Anfang der Zeile verwenden .. – barsju
Meine Absicht war, irgendwelche Zeilen mit "Test" in SRVC_CALL_DN auszuschließen. Ich habe Ihren Vorschlag mit NON REGEXP_LIKE verwendet, was funktioniert hat! Vielen Dank ! – Kyle