MySQLのLOCATE()関数とは?使い方と実行例をわかりやすく解説
MySQLのLOCATE()関数は、指定した文字列の中から部分文字列が最初に出現する位置を取得するための関数です。この関数を使用する際には、「検索したい部分文字列」と「検索対象となる元の文字列」の2つを引数として渡す必要があります。
構文
LOCATE(Substring, String)
第一引数の「Substring」には出現位置を調べたい部分文字列を指定し、第二引数の「String」にはその部分文字列を検索する対象となる文字列を指定します。
使用例
mysql> Select LOCATE('DE','ABCDEFGH');
+-------------------------+
| LOCATE('DE','ABCDEFGH') |
+-------------------------+
| 4 |
+-------------------------+
1 row in set (0.00 sec)
mysql> Select LOCATE('G','ABCDEFGH');
+------------------------+
| LOCATE('G','ABCDEFGH') |
+------------------------+
| 7 |
+------------------------+
1 row in set (0.00 sec)
mysql> Select LOCATE('GH','ABCDEFGH');
+-------------------------+
| LOCATE('GH','ABCDEFGH') |
+-------------------------+
| 7 |
+-------------------------+
1 row in set (0.00 sec)実行結果のポイント
上記の実行例からわかるように、LOCATE()関数は文字列内で部分文字列が最初に出現する位置を返します。位置は先頭を「1」として数えられるため、'DE'であれば4番目、'G'や'GH'であれば7番目という結果になります。
また、覚えておくと便利な仕様として以下の点が挙げられます。
- 部分文字列が見つからなかった場合は「0」が返されます。
- 大文字・小文字の区別は照合順序( collation )によって決まります。一般的な照合順序では区別されません。
- 第3引数に開始位置を指定することで、任意の位置以降から検索を行うことも可能です(例:LOCATE('A', 'ABACA', 3))。
同様の機能を持つ関数にはINSTR()がありますが、こちらは引数の順序が逆(文字列、部分文字列)になっているため、用途に応じて使い分けるとよいでしょう。
-
MySQLのINSERT IGNOREステートメントとは?重複データの挿入を防ぐ方法
INSERT IGNOREステートメントは、MySQLのテーブルに重複したデータが挿入されるのを防ぐために使用されます。通常のINSERT文の代わりにINSERT IGNOREコマンドを使うと、新規レコードが既存レコードと重複していなければ通常どおり挿入されますが、重複している場合はIGNOREキーワードによってMySQLがそのレコードを黙って破棄し、エラーを発生させません。 基本構文 INSERT IGNORE INTO table_name(...) ここで、table_nameは値を挿入したいテーブルの名前です。カラム名とVALUES句の指定方法は通常のINSERT文と同じです。 動作の
-
MySQLでCHAR()関数の逆の処理を行う方法|ASCII()とORD()の違いを解説
MySQLにおいて、CHAR()関数の逆の働きをするのは ASCII() 関数と ORD() 関数です。CHAR() は数値(文字コード)を文字に変換する関数ですが、ASCII() は引数の文字列の左端の文字に対応する数値(ASCIIコード)を返し、ORD() は左端の文字の文字コードを返します。 ASCII()とORD()の違い どちらも文字から数値への変換を行う点は共通していますが、以下のような違いがあります。 ASCII():シングルバイト文字専用。マルチバイト文字を渡すと警告が出て64を返します。 ORD():マルチバイト文字にも対応しており、最初のバイトの値に基づいて計算された文字