MySQLでPHPのstripos()関数と同等の処理を行うには?INSTR()関数の使い方を解説
MySQLには、PHPのstripos()関数と同等の働きをするINSTR()関数が用意されています。INSTR()関数は、ある文字列の中で指定した文字列が最初に出現する位置を返します。
INSTR()関数の基本構文
select instr(yourColumnName,yourWord) As anyAliasName from yourTableName;
サンプルテーブルの作成
まず、動作確認用のテーブルを作成しましょう。
mysql> create table DemoTable
-> (
-> Title text
-> );
Query OK, 0 rows affected (1.22 sec)
データの挿入と確認
insertコマンドを使って、テーブルにレコードを追加します。
mysql> insert into DemoTable values('MySQL is my favourite subject');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('MongoDB is not my favourite subject');
Query OK, 1 row affected (0.20 sec)
selectステートメントで、テーブル内の全レコードを確認してみます。
mysql> select *from DemoTable;
出力結果
+-------------------------------------+ | Title | +-------------------------------------+ | MySQL is my favourite subject | | MongoDB is not my favourite subject | +-------------------------------------+ 2 rows in set (0.00 sec)
stripos()と同等のクエリを実行する
以下のクエリを実行すると、各レコードのTitleカラム内で「favourite」という文字列が最初に出現する位置を取得できます。PHPのstripos()と同様の結果が得られます。
mysql> select instr(Title,'favourite') As Position from DemoTable;
出力結果
+----------+ | Position | +----------+ | 13 | | 19 | +----------+ 2 rows in set (0.00 sec)
補足:大文字・小文字の扱いについて
PHPのstripos()は大文字・小文字を区別しませんが、MySQLのINSTR()の挙動はカラムの照合順序(collation)に依存します。デフォルトの照合順序(utf8mb4_general_ci など、末尾が「_ci」のもの)では大文字・小文字を区別せずに検索されるため、stripos()と同じ動作になります。逆に、大文字・小文字を厳密に区別したい場合は、BINARY演算子を使用するか、照合順序を「_bin」に変更してください。
また、INSTR()と同様の機能を持つLOCATE()関数も存在します。LOCATE()は引数の順序が逆(検索する文字列が先)になる点に注意してください。
-
MySQLのUNHEX()に相当するPHP関数とは?hex2bin()の使い方を解説
PHPにおけるMySQLのUNHEX()相当の関数MySQLのUNHEX()関数と同じ処理をPHPで行いたい場合は、hex2bin()関数を使用します。この関数は、16進数形式の文字列をバイナリデータ(元の文字列)に変換するもので、まさにMySQLのUNHEX()に相当する機能を持っています。hex2bin()の基本構文構文は以下の通りです。$anyVariableName = hex2bin(yourHexadecimalValue);引数には16進数の文字列を指定し、戻り値として変換後のバイナリデータが返されます。PHPでの実装例実際にhex2bin()を使用したサンプルコードを見てみまし
-
MySQLのSMALLINTに相当するJavaの型は?short型との対応関係を解説
MySQLのSMALLINTに相当するJavaのデータ型は、short型です。Javaのshort型は2バイト(16ビット)の符号付き整数で、-32768から32767までの範囲の値を扱うことができます。MySQLのSMALLINTも同様に2バイトで、同じ範囲の値を格納可能です。MySQLのSMALLINTとJavaのshort型の比較項目MySQL(SMALLINT)Java(short)サイズ2バイト(16ビット)2バイト(16ビット)値の範囲-32768 ~ 32767-32768 ~ 32767備考UNSIGNEDを指定すると0 ~ 65535になる符号付きのみなお、MySQLでUNS