name
: 、タイプ:text
、FULLTEXT
インデックスという名前の列があります
name
そして私はこのクエリで列からIPアドレスを見つけようとします:
SELECT * FROM `data` WHERE MATCH(ip) AGAINST ('127.0.0.1')
しかし、結果として0を取得しました。これは文字でのみ機能し、数字では機能しません。それを修正する方法は?
試す
SELECT * FROM data WHERE ip LIKE '%127.0.0.1%'
または、IPアドレスが名前列にある場合は、
SELECT * FROM data WHERE name LIKE '%127.0.0.1%'
フィールドには何がip
含まれていますか? それは単一の IP アドレスですか、それとも複数の IP アドレスですか?
アドレスが 1 つだけの場合は、またはその他の専門的なクエリを使用する必要はありませMATCH
んLIKE
。そのまま使用して=
ください。すなわち:
SELECT * FROM data WHERE ip = '127.0.0.1'
レコードごとに複数の IP アドレスがある場合は、別の相互参照テーブルに分割することを検討することをお勧めします。これにより、このような検索クエリを実行する必要がある場合に管理がはるかに簡単になります。次に、答えは再び を使用するだけに戻り=
、IP テーブルに結合します。
SELECT * FROM data d
INNER JOIN ipAddresses i on i.dataID=d.id
WHERE i.ip = '127.0.0.1'