Heim > Datenbank > MySQL-Tutorial > Wie kann ich in PostgreSQL effizient Zeichenfolgen abgleichen, die mit „00', aber nicht mit „000' beginnen?

Wie kann ich in PostgreSQL effizient Zeichenfolgen abgleichen, die mit „00', aber nicht mit „000' beginnen?

Linda Hamilton
Freigeben: 2024-12-30 18:50:18
Original
373 Leute haben es durchsucht

How Can I Efficiently Match Strings Starting with

Reguläre Ausdrücke in PostgreSQL

Reguläre Ausdrücke bieten eine leistungsstarke Möglichkeit, nach Mustern in Textzeichenfolgen zu suchen. Gelegentlich kann es jedoch zu Problemen bei der effektiven Verwendung kommen.

Ein solches Beispiel ist der Versuch, eine Zeichenfolge zu finden, die mit „00“ beginnt, deren drittes Zeichen jedoch nicht „0“ ist. Die Verwendung der LIKE-Klausel mit einem Ausdruck wie „00[1-9]%“ funktioniert möglicherweise nicht wie erwartet.

Um dieses Problem zu beheben, können Sie den regulären Ausdrucksoperator (~) und Klammerausdrücke verwenden. Betrachten Sie die folgende Abfrage:

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

Hier gibt ^ an, dass das Muster am Anfang der Zeichenfolge übereinstimmen soll, und 1 ist eine Zeichenklasse, die übereinstimmt jedes Zeichen, das nicht „0“ ist.

Alternativ können Sie für eine optimale Leistung eine Kombination aus LIKE und NOT LIKE verwenden Ausdrücke:

SELECT *
FROM   tbl
WHERE  value LIKE '00%'
AND    value NOT LIKE '000%'
Nach dem Login kopieren

LIKE ist im Allgemeinen schneller als reguläre Ausdrücke, daher ist es vorteilhaft, es bei Bedarf zu verwenden. Darüber hinaus kann PostgreSQL Indizes für links verankerte LIKE-Ausdrücke (z. B. „00 %“) verwenden, was die Leistung bei großen Tabellen erheblich verbessern kann.


    Das obige ist der detaillierte Inhalt vonWie kann ich in PostgreSQL effizient Zeichenfolgen abgleichen, die mit „00', aber nicht mit „000' beginnen?. 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