それはフィールドがこのようなものがあり、MySQLのフィールドを検索することができます場合、私は疑問に思って:MySQLの検索
test - hello
をしかし、あなたは、ユーザー
test: hello
から文字列を持っています
明らかに、PHP側でそのような特殊文字列を取り除くのは簡単ですが、MySQL行を検索して特殊文字を無視することは可能ですか?
それはフィールドがこのようなものがあり、MySQLのフィールドを検索することができます場合、私は疑問に思って:MySQLの検索
test - hello
をしかし、あなたは、ユーザー
test: hello
から文字列を持っています
明らかに、PHP側でそのような特殊文字列を取り除くのは簡単ですが、MySQL行を検索して特殊文字を無視することは可能ですか?
あなたが見つけると、そのようなすべての特殊文字やユーザも入力欄からスペースを交換する場合、それは可能かもしれない、あなたが使用してなどの特殊文字、空白を、「無視」でソートすることができます すなわち
select * from tablename where replace(replace(columnname,' ',''),':',''),'-','')=replace(replace([USER INPUT],' ',''),':',''),'-','');
うーん、それはかなり斬新なアプローチだ、それは行く、感謝を与えるかもしれない! – NaughtySquid
SOUNDEX()
機能:
SELECT ...
FROM MyTable
WHERE SOUNDEX(somefield) = SOUNDEX('test: hello');
:
mysql> select soundex('test - hello'), soundex('test: hello');
+-------------------------+------------------------+
| soundex('test - hello') | soundex('test: hello') |
+-------------------------+------------------------+
| T234 | T234 |
+-------------------------+------------------------+
ですから、このようなあなたのデータを検索することができます
これは索引付け不可能なので、テーブルスキャンを強制されます。 MySQL 5.7を使用する場合は、soundex式の仮想列を追加し、その仮想列にインデックスを付けることができます。それはパフォーマンスを大きく助けます。
はフルテキストインデックスを基本的に使用します。それ以外の場合は、「無視する」ことはできません。それはあなたのコードがmysqlではなく、何かをしなければならないことです。 –