我有一个列命名为: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地址在name列中,则SELECT * FROM data WHERE name LIKE '%127.0.0.1%'
ip
字段包含什么?是单个IP地址还是多个IP地址?
如果它只是一个地址,你不需要使用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'