ホームページ >データベース >mysql チュートリアル >PostgreSQL で NULL 文字列と空の文字列を効率的にチェックするにはどうすればよいですか?
PostgreSQL で文字列値を扱うときは、NULL 値 (データがまったくないことを示す) と空の文字列 ('' で示される) を必ず確認してください。一般的なアプローチは、Coalesce 関数を使用することです:
<code class="language-sql">coalesce(stringexpression, '')=''</code>
ただし、このアプローチは、特にチェックする式が複雑な場合、冗長で非効率になる可能性があります。
より効率的で簡潔な解決策は、比較演算子を利用することです:
<code class="language-sql">(stringexpression = '') IS NOT FALSE</code>
この式は、stringexpression が空の文字列または NULL と等しいかどうかをチェックします。結果は次のようになります:
このメソッドは、空の文字列とスペースのみで構成される文字列と区別できない char(n) などの文字型に特に適しています。
反対のことを主張するには、次のようにしてください:
<code class="language-sql">stringexpression <> ''</code>
char(n) データ型には特別な注意が必要です。仕様により、char(n) の空の文字列には、指定された長さに達するまでスペースが埋め込まれます。したがって、上記のテストは char(n) に対しても機能します。
これらの方法を説明するために、次の表を考えてみましょう:
<code class="language-sql">SELECT * FROM test_data( VALUES ('foo', 'bar', NULL, '', ' ') );</code>
さまざまなテストを実行すると、次の結果が得られます:
表达式 | foo | bar | NULL | ||
---|---|---|---|---|---|
stringexpression = '' | False | False | NULL | True | True |
(stringexpression = '') IS NOT FALSE | False | False | True | True | True |
(stringexpression '') IS NOT TRUE | True | True | False | False | False |
coalesce(stringexpression, '') = '' | False | False | True | False | True |
上で概説した効率的で簡潔なアプローチは、PostgreSQL で NULL または null 値をチェックする際の強力で信頼性の高いソリューションを提供します。比較演算子を使用すると、不器用な式を使用するオーバーヘッドを発生させずに、必要な結果を得ることができます。
以上がPostgreSQL で NULL 文字列と空の文字列を効率的にチェックするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。