ホームページ >データベース >mysql チュートリアル >SQL で大文字と小文字を区別しないワイルドカード検索を実行するにはどうすればよいですか?
<code>| title | |-----------------| | Elm Tree | | elm tree | | Red Elm | | RED ELM | | Oak Tree | </code>
クエリ SELECT * FROM trees WHERE LOWER(trees.title) LIKE '%elm%'
は次の行を返します:
<code>| title | |-----------------| | Elm Tree | | elm tree | | Red Elm | | RED ELM |</code>
これは、LOWER 関数を使用した検索の大文字と小文字を区別しない性質です。この方法では、比較前に すべて の値が小文字に変換されるため、非常に大きなテーブルのパフォーマンスに影響を与える可能性があることに注意してください。大文字と小文字を区別しない代替の比較方法を提供します。
SQL 大文字と小文字を区別しないワイルドカード検索
LIKE 演算子を使用して SQL でワイルドカード検索を実行する場合、大文字と小文字の区別が問題になる場合があります。たとえば、クエリ SELECT * FROM trees WHERE trees.title LIKE '%elm%'
は、タイトル列に正確な文字列「elm」が含まれている場合にのみ結果を返します。
解決策: LOWER 関数を使用します
MySQL は、LOWER 関数を使用してこの問題の解決策を提供します。 LOWER 関数に列を含めることにより、検索では大文字と小文字が区別されなくなります。その方法は次のとおりです:
<code class="language-sql">SELECT * FROM trees WHERE LOWER(trees.title) LIKE '%elm%'</code>
このクエリでは、LIKE 検索を実行する前に、LOWER 関数がタイトル列の内容を小文字に変換します。したがって、クエリは、タイトルの小文字表現に文字列「elm」が含まれるすべての行を返します。
例
次の行を含むtreesという名前の仮想テーブルを考えてみましょう:
<code>| title | |-----------------| | Elm Tree | | elm tree | | Red Elm | | RED ELM | | Oak Tree |</code>
QuerySELECT * FROM trees WHERE LOWER(trees.title) LIKE '%elm%'
は次の行を返します:
<code>| title | |-----------------| | Elm Tree | | elm tree | | Red Elm | | RED ELM |</code>
これは、LOWER 関数を使用した大文字と小文字を区別しない検索機能を示しています。このメソッドは比較する前にすべての値を小文字に変換するため、大きなテーブルのパフォーマンスに影響を与える可能性があることに注意してください。他のデータベース システムでは、大文字と小文字を区別しない別の比較方法が提供される場合があります。
<code></code>
以上がSQL で大文字と小文字を区別しないワイルドカード検索を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。