10月
15
2012

MySQLで半角/全角スペースを無視して検索する方法

MySQLのreplace関数を使用

MySQLには、文字列を置換するreplace関数を利用できるので、これを使用します。

replace(str,from_str,to_str)

strに含まれるfrom_strを検索し、to_strに置換します。

例:半角/全角スペースを無視して検索する場合

select * from table where replace(replace(key,' ',''),' ','') like '%検索文字列%'

フィールドkeyから半角/全角スペースを削除して、検索文字列で部分一致させています。

PHPから利用する場合

PHPで利用する場合には、入力した検索文字列からも空白を削除しましょう。
以下にPHPで入力文字列から空白を削除して、pdoの検索文字列(:KEY)にバインドする方法を記述します。

// 例:pdoで検索文字列(:KEY)をバインドする方法
//   ※\sは[ \t\n\f\r]と同義です
//   ※utf-8の場合、preg_replaceの修飾子に'u'が必要です
$stmt->bindValue(':KEY','%' . preg_replace('/[\s ]/u','',$key) . '%');

コメントする

メールアドレスは公開されません。

このエントリーをはてなブックマークに追加