Heim > Datenbank > MySQL-Tutorial > PostgreSQL-String-Matching: LIKE vs. ~ für effiziente Abfragen regulärer Ausdrücke?

PostgreSQL-String-Matching: LIKE vs. ~ für effiziente Abfragen regulärer Ausdrücke?

Linda Hamilton
Freigeben: 2024-12-24 17:34:17
Original
554 Leute haben es durchsucht

PostgreSQL String Matching:  LIKE vs. ~ for Efficient Regular Expression Queries?

Reguläre Ausdrücke in PostgreSQL-LIKE-Klausel: Verwendung von LIKE vs. ~-Operator

In PostgreSQL können Sie reguläre Ausdrücke verwenden, um nach bestimmten Mustern zu suchen innerhalb von Daten. Wenn Sie jedoch auf Probleme mit Ihren Ausdrücken stoßen, ist es wichtig, die Nuancen und Einschränkungen zu verstehen.

Die Herausforderung: Drittes Zeichen stimmt nicht überein

Bedenken Sie die folgende Abfrage :

SELECT *
FROM table
WHERE value LIKE '00[1-9]%'
-- (third character should not be 0)
Nach dem Login kopieren

Trotz der Absicht, jeden Wert mit dem dritten Zeichen „0“ auszuschließen, wird diese Abfrage diese Kriterien nicht erfüllen. Stattdessen stimmt es mit jedem Wert überein, der mit „00“ beginnt.

Die Lösung: Verwendung des ~-Operators

Um Klammerausdrücke effektiv zu nutzen, müssen wir den regulären Ausdrucksoperator verwenden ~:

SELECT *
FROM tbl
WHERE value ~ '^00[^0]'
Nach dem Login kopieren

^ ... bezeichnet den Anfang der Zeichenfolge und stellt sicher, dass das Muster nur an der Stelle übereinstimmt Anfang.
1 ... stellt eine Zeichenklasse dar, die mit allem außer „0“ übereinstimmt.

Ein optimierter Ansatz

Für eine optimale Leistung sollten Sie die Abfrage in zwei LIKE-Ausdrücke aufteilen:

SELECT *
FROM tbl
WHERE value LIKE '00%'       -- starting with '00'
AND value NOT LIKE '000%'  -- third character is not '0'
Nach dem Login kopieren

LIKE ist weniger wirkungsvoll als reguläre Ausdrücke, aber normalerweise schneller. Durch die Begrenzung der Kandidaten mit dem sparsamen LIKE-Ausdruck verbessern wir die allgemeine Abfragegeschwindigkeit.

Darüber hinaus ist es wichtig, links verankerte Ausdrücke wie den Wert LIKE „00 %“ zu verwenden, da diese Indizes in PostgreSQL nutzen können. Dies ist besonders bei großen Tabellen von Vorteil, während der komplexere reguläre Ausdruck möglicherweise keine Indizierung unterstützt.


    Das obige ist der detaillierte Inhalt vonPostgreSQL-String-Matching: LIKE vs. ~ für effiziente Abfragen regulärer Ausdrücke?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Quelle:php.cn
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Neueste Artikel des Autors
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage