Regulärer Ausdruck in der PostgreSQL-LIKE-Klausel
Diese Abfrage versucht, Werte abzugleichen, die mit „00“ beginnen und ein drittes Zeichen enthalten, das sich von „0“ unterscheidet ', wie in '0090D0DF143A'. Die folgende Abfrage stimmt jedoch nicht überein:
SELECT * FROM table WHERE value LIKE '00[1-9]%'
Um dieses Problem zu beheben, sollten Sie den regulären Ausdrucksoperator „~“ zusammen mit einem Klammerausdruck außerhalb der LIKE-Klausel verwenden. Für eine optimale Leistung wird jedoch eine Kombination aus LIKE- und NOT LIKE-Klauseln empfohlen:
SELECT * FROM tbl WHERE value LIKE '00%' AND value NOT LIKE '000%'
Die LIKE-Klausel schränkt die potenziellen Übereinstimmungen mit einem linksverankerten Ausdruck effizient ein, während die NOT LIKE-Klausel dies weiter verfeinert Ergebnisse. Postgres kann Indizes für solche Ausdrücke verwenden, was zu einer schnelleren Abfrageausführung führt.
Darüber hinaus ist es wichtig, das Muster mit „^“ in regulären Ausdrücken am Anfang der Zeichenfolge zu verankern und Klammerausdrücke „“ zu verwenden 1', um mit jedem anderen Zeichen als übereinzustimmen '0'.
Das obige ist der detaillierte Inhalt vonWie kann ich PostgreSQL effizient nach Werten abfragen, die mit „00' und einem dritten Zeichen ungleich Null beginnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!