Heim >Datenbank >MySQL-Tutorial >Wie kann ich Zeichenfolgen, die mit „00' beginnen, und einer dritten Ziffer ungleich Null in PostgreSQL effizient zuordnen?

Wie kann ich Zeichenfolgen, die mit „00' beginnen, und einer dritten Ziffer ungleich Null in PostgreSQL effizient zuordnen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-25 06:40:26708Durchsuche

How Can I Efficiently Match Strings Starting with

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]'
  • ^: Entspricht dem Anfang der Zeichenfolge

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!

Stellungnahme:
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