MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのSOUNDEX()関数とLIKE演算子を組み合わせてテーブルからレコードを取得する方法

SOUNDEX()関数は、文字列に対してサウデックスコード(英語の発音に基づいて名前を索引付けするための音響アルゴリズム)を返す関数です。この関数をLIKE演算子と組み合わせることで、発音が似た名前を持つレコードを柔軟に検索できます。

以下の例では、「Student_info」テーブルからデータを取得し、SOUNDEX()関数をLIKE演算子と併用して特定のレコードを取り出しています。

mysql> Select * from Student_info;
+------+---------+------------+------------+
| id   | Name    | Address    | Subject    |
+------+---------+------------+------------+
| 101  | YashPal | Amritsar   | History    |
| 105  | Gaurav  | Chandigarh | Literature |
| 125  | Raman   | Shimla     | Computers  |
+------+---------+------------+------------+
3 rows in set (0.00 sec)

mysql> Select * from student_info where SOUNDEX(Name) LIKE '%G%';
+------+--------+------------+------------+
| id   | Name   | Address    | Subject    |
+------+--------+------------+------------+
| 105  | Gaurav | Chandigarh | Literature |
+------+--------+------------+------------+
1 row in set (0.00 sec)

クエリの仕組み

上記のクエリでは、SOUNDEX()関数の引数としてカラム名「Name」を指定しています。これにより、SOUNDEX値が「%G%」に一致する行だけが結果として返されます。SOUNDEX()関数の出力は、必ず引数として渡した文字列の最初の文字で始まるという特徴があります。

SOUNDEX()関数の出力の特徴

SOUNDEX()関数は、渡された文字列の最初の文字を出力の先頭に含めます。例えば、引数として「Ram」を渡した場合、出力の最初の文字は「R」になります。

mysql> Select SOUNDEX('Ram');
+----------------+
| SOUNDEX('Ram') |
+----------------+
| R500           |
+----------------+
1 row in set (0.00 sec)

mysql> Select SOUNDEX('ram');
+----------------+
| SOUNDEX('ram') |
+----------------+
| R500           |
+----------------+
1 row in set (0.00 sec)

このように、大文字・小文字のどちらで渡しても同じ「R500」という結果が返される点にも注目してください。最初の文字が一致するため、LIKE演算子で「%G%」のようにパターンを指定すると、その文字で始まるサウデックスコードを持つすべてのレコードを効率的に絞り込むことができます。

  1. MySQLで「10/12/2010」形式の日付から特定の年を抽出してテーブルのレコードを更新する方法

    日付が「10/12/2010」のような文字列形式(日/月/年)で保存されている場合、STR_TO_DATE()関数で日付に変換し、YEAR()関数と組み合わせることで、特定の年に該当するレコードだけを更新できます。基本構文UPDATE yourTableName SET yourColumnName1 = yourValue1 WHERE YEAR(STR_TO_DATE(yourColumnName2, %d/%m/%Y)) = yourValue2;サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable1924

  2. MySQLでテーブルの日付レコードを変更する方法|UPDATEとDATE_ADD()の使い方

    MySQLで保存済みの日付データに年数を加算して変更したい場合、UPDATEコマンドとDATE_ADD()関数を組み合わせることで簡単に実現できます。ここでは、実際のSQLクエリ例を使いながら、日付レコードを変更する手順を順番に解説します。1. テーブルを作成するまず、日付型(date)のカラムを持つテーブルを作成します。mysql> create table DemoTable1984 ( ShippingDate date ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERTコマンドを使ってテ