カンマ区切りの列で特定の値をクエリする
データベースでよくある課題が発生します。それは、カンマ区切りの列を含むテーブルにクエリを実行することです。特定のカテゴリ値。 LIKE ステートメントは解決策を提供する可能性がありますが、冗長で非効率になる可能性があります。
この問題に対処するための潜在的な解決策には、FIND_IN_SET() 関数が含まれます。ただし、Oracle 10g では、この関数は使用できないため、「無効な識別子」エラーが発生します。
LIKE ステートメントのより堅牢な代替手段が利用可能です。
<code class="sql">select * from YourTable where ',' || CommaSeparatedValueColumn || ',' LIKE '%,SearchValue,%'</code>
このクエリは次のものを検索します。カンマ区切りの列内の検索値の完全一致。ただし、文字列の先頭または末尾の値を考慮して、検索値の前後の両方にカンマを含めることが重要です。
このクエリは効果的ではありますが、特に次の場合、LIKE 固有の遅さによりパフォーマンスの制限に遭遇する可能性があります。先頭のワイルドカードが存在します。
最終的に、カンマ区切り列を処理するための理想的なソリューションは、データの再構築を検討することです。これには、カテゴリの子テーブルの作成、またはクロスリンク メカニズムを通じてメイン テーブルにリンクされたカテゴリの別のテーブルの作成が含まれる場合があります。この方法でデータを正規化することで、今後のクエリがより効率的かつ正確になる可能性があります。
以上がOracle 10g で特定の値をカンマ区切り列にクエリする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。