ホームページ >データベース >mysql チュートリアル >PostgreSQL で「00」で始まる文字列とゼロ以外の 3 桁目を効率的に照合するにはどうすればよいですか?

PostgreSQL で「00」で始まる文字列とゼロ以外の 3 桁目を効率的に照合するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-25 06:40:26702ブラウズ

How Can I Efficiently Match Strings Starting with

PostgreSQL LIKE 句の正規表現

この式は、「00」で始まり、その後に 1 から 1 までの数字が続く文字列と一致することを目的としています。ただし、3 番目の文字が「0」である文字列は除きます。間違った式は次のとおりです:

select * from table where value like '00[1-9]%'

LIKE 演算子の間違った使用法:

PostgreSQL の正規表現演算子は、LIKE の代わりにチルダ (~) を使用します。括弧式を使用するには、演算子を ~ に変更する必要があります。

改良された正規表現:

SELECT *
FROM   table
WHERE  value ~ '^00[^0]'
  • ^: 文字列の先頭と一致します

の代替使用法LIKE:

正規表現の代わりに、否定と組み合わせた LIKE 演算子を使用できます:

SELECT *
FROM   table
WHERE  value LIKE '00%'       -- Starts with '00'
AND    value NOT LIKE '000%'  -- Excludes third character '0'

このアプローチは、多くの場合、単純なパターンの場合、正規表現より高速です。

インデックスの最適化:

Postgres のサポート'00%' のような左アンカー LIKE 式のインデックス。インデックスを作成すると、大規模なテーブルのパフォーマンスが大幅に向上します。正規表現は常にインデックスを利用するとは限らないため、より良いインデックス作成の機会を得るために LIKE の代替手段を検討する価値があります。

以上がPostgreSQL で「00」で始まる文字列とゼロ以外の 3 桁目を効率的に照合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。