概要:このチュートリアルでは、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.,
試してみてください
INSTR
productname
列にインデックスがあるにもかかわらず、productname
関数はテーブルスキャンを実行します。 これは、MySQLがINSTR
関数のセマンティクスに関する仮定を行うことができず、MySQLがLIKE
演算子のセマンティクスの理解を利用
文字列内に部分文字列が存在するかどうかをテストする最速の方法は、フルテキストインデックスを使用することです。, ただし、インデックスを適切に構成し、維持する必要があります。
このチュートリアルでは、INSTR
関数を使用して、文字列内の部分文字列が最初に出現する位置を見つける方法を学習しました。/p>
- このチュートリアルは役に立ちましたか?
- イェスノ
Leave a Reply