概要:このチュートリアルでは、MySQL INSTR関数を使用して文字列の最初の位置を返す方法を示します。
MySQL INSTR関数の概要
文字列内の部分文字列を検索したり、文字列内に部分文字列が存在するかどうかを確認したりすることがあります。 この場合、INSTRという文字列組み込み関数を使用できます。
INSTR関数は、文字列内の部分文字列の最初の出現の位置を返します。, 部分文字列がstrに見つからない場合、INSTR関数はゼロ(0)を返します。
以下は、INSTR関数の構文を示しています。
Code language: SQL (Structured Query Language) (sql)
それを試してみてください
INSTR関数は二つの引数を受け入れます:
str検索する文字列です。li>substr検索する部分文字列です。
INSTR関数では大文字と小文字は区別されません。, これは、小文字、大文字、タイトルの大文字小文字などを渡しても問題ではないことを意味します。、結果は常に同じです。
INSTR関数で非バイナリ文字列で大文字と小文字を区別して検索を実行する場合は、BINARY演算子を使用して、INSTR関数の引数を非バイナリ文字列からバイナリ文字列にキャストします。
MySQL INSTR関数の例
次のステートメントは、MySQL INSTR文字列内のMySQLの部分文字列の位置を返します。,
Code language: SQL (Structured Query Language) (sql)
試してみてください
INSTR関数は大文字と小文字を区別しないため、次のステートメントは同じ結果を返します。,
Code language: SQL (Structured Query Language) (sql)
試してみてください
INSTR大文字と小文字を区別する方法に基づいて検索するには、BINARY演算子を次のように使用します。
Code language: SQL (Structured Query Language) (sql)
試してみてください
結果は、mysqlとmysqlがBINARY演算子を使用しているため、結果が異なります。
INSTR関数とLIKE演算子
サンプルデータベースのproductsテーブルを使用します。,
carキーワードを含む名前の製品を見つけたいとします。INSTR次のように関数を使用できます。
Code language: SQL (Structured Query Language) (sql)
それを試してみてください
INSTR関数のほかに、LIKE演算子を使用して、Carパターン。,
Code language: SQL (Structured Query Language) (sql)
試してみてください
両方のクエリは同じ結果を返します。 したがって、どちらが高速ですか、INSTRまたはLIKE演算子?
答えは、それらが同じであるということです。 両方とも大文字と小文字が区別され、完全なテーブルスキャンを実行します。
productname列にインデックスを作成しましょう。,
Code language: SQL (Structured Query Language) (sql)
試してみてください
LIKE演算子をプレフィックス検索とともに使用すると、このインデックス付き列では、LIKE演算子はINSTR関数よりも高速に実行されます。
次のステートメントを参照してください。,
Code language: SQL (Structured Query Language) (sql)
Try It Out
You can check it using the EXPLAIN statement:
Code language: SQL (Structured Query Language) (sql)
Try It Out
And compare with the following statement that uses the INSTR function.,
試してみてください
INSTRproductname列にインデックスがあるにもかかわらず、productname関数はテーブルスキャンを実行します。 これは、MySQLがINSTR関数のセマンティクスに関する仮定を行うことができず、MySQLがLIKE演算子のセマンティクスの理解を利用
文字列内に部分文字列が存在するかどうかをテストする最速の方法は、フルテキストインデックスを使用することです。, ただし、インデックスを適切に構成し、維持する必要があります。
このチュートリアルでは、INSTR関数を使用して、文字列内の部分文字列が最初に出現する位置を見つける方法を学習しました。/p>
- このチュートリアルは役に立ちましたか?
- イェスノ
Leave a Reply