Ich habe zwei Tabellen, in denen ich zwei Listen mit einer LIKE-Anweisung vergleichen möchte. Aber ich möchte die Textzeichenfolge für den Vergleich nicht eingeben. Anstatt also mit:LIKE für zwei getrennte Spaltenausgänge verwenden
WHERE a.column1 LIKE '%pattern1%' OR a.column1 LIKE '%b.pattern2%'
Ich möchte die Abfrage sagen
WHERE a.column1 LIKE b.column1
Ich weiß, das bei weitem nicht optimal ist, mehrere LIKES verwenden, aber für die Zwecke dieser Abfrage das ist genau das, was ich brauche, um machen.
Können Sie bitte bestätigen, ist das tatsächlich möglich und wenn ja, welche Syntax sollte ich verwenden? Ich bin auf Postgresql aber kann auch aws oder presto Alternativen verwenden, obwohl ich mir vorstellen würde, dass sie begrenzter wären.
Wenn ich das obige Beispiel ausprobiere, bekomme ich null Ergebnisse. Wenn ich versuche, die volle Liste als Text zu extrahieren und posix oder irgendwelche Array-Funktionen zu verwenden, bekomme ich eine Fehlermeldung: 'ungültiger regulärer Ausdruck: Quantifiziereroperand ungültig'
Jeder möglicher Rat würde sehr geschätzt werden. Vielen Dank!
Vielen Dank für die Antwort auf Rahul. Leider gibt dies auch null Ergebnisse zurück. Ich habe auch versucht, WHERE '%' || zu verwenden a.column1 || '%' ILIKE '%' || b.column1 || '%', aber auch Null-Ergebnisse. Ich gehe davon aus, dass es einen Weg geben muss, dies zu tun! – afropunk
Verwenden Sie Kreuzprodukt von wl und ur? –
Hey Rahul Ich habe vielleicht zu früh gesprochen, ich habe die Reihenfolge WHERE b.column1 LIKE '%' || umgekehrt a.column1 || "%" und ich bekomme ein paar Ergebnisse. Durchsuche sie jetzt, um zu sehen, ob sie gut sind. Wird bald zurück posten! – afropunk