Reguläre Ausdrücke in der PostgreSQL-LIKE-Klausel
Ihr Ausdruck soll Zeichenfolgen abgleichen, die mit „00“ beginnen und denen eine Ziffer zwischen 1 und folgt 9, jedoch ausgenommen Zeichenfolgen, bei denen das dritte Zeichen „0“ ist. Der falsche Ausdruck ist:
select * from table where value like '00[1-9]%'
Falsche Verwendung des LIKE-Operators:
Reguläre Ausdrucksoperatoren in PostgreSQL verwenden die Tilde (~) anstelle von LIKE. Um Klammerausdrücke zu verwenden, müssen Sie den Operator in ~ ändern.
Verbesserter Regex:
SELECT * FROM table WHERE value ~ '^00[^0]'
Alternative Verwendung LIKE:
Anstelle eines regulären Ausdrucks können Sie den LIKE-Operator in Kombination mit der Negation verwenden:
SELECT * FROM table WHERE value LIKE '00%' -- Starts with '00' AND value NOT LIKE '000%' -- Excludes third character '0'
Dieser Ansatz ist für einfache Muster oft schneller als reguläre Ausdrücke.
Indexoptimierung:
Postgres unterstützt Indizes für links verankerte LIKE Ausdrücke wie „00 %“. Durch die Indizierung kann die Leistung bei großen Tabellen erheblich verbessert werden. Reguläre Ausdrücke verwenden möglicherweise nicht immer Indizes, daher lohnt es sich, die LIKE-Alternative in Betracht zu ziehen, um bessere Indizierungsmöglichkeiten zu erhalten.
Das obige ist der detaillierte Inhalt vonWie kann ich Zeichenfolgen, die mit „00' beginnen, und einer dritten Ziffer ungleich Null in PostgreSQL effizient zuordnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!