我有一个SQL表,其中有一个IP地址的列条目,如5. 5. 44. 4。即5.<space><space>5.<space>44.<space><space>4我有一个查询搜索这个ip地址一样
5. 5. 44. 4
5.<space><space>5.<space>44.<space><space>4
select dns_name from toms_table where ip_address like '%5.5.44.4%'
但这并不是仅仅因为ipaddress中的空格而列出dns_name。如何在sql查询中指示在搜索时忽略表条目中的空间?
aoyhnmkz1#
您需要使用REPLACE删除所有不需要或不想要的字符如果IP地址只包含'5。44.4 '没有附加字符,你不需要%,mysql不会使用该表的索引,这将提高查询的速度
CREATE tABLE toms_table (ip_address varchar(100), dns_name varchar(4))
INSERT INTO toms_table VALUES ('5. 5. 44. 4','test')
select dns_name from toms_table where REPLACE(ip_address, ' ','') like '%5.5.44.4%'
| dns_name|| --|| 测试|
select dns_name from toms_table where REPLACE(ip_address, ' ','') like '5.5.44.4'
| dns_name|| --|| 测试|fiddle
2mbi3lxu2#
REGEXP '\\b5\\s*.\\s*5\\s*.\\s*44\\s*.\\s*4\\b'
(That MySQL 8.0的语法; MySQL 5和MariaDB需要不同的语法。
2条答案
按热度按时间aoyhnmkz1#
您需要使用REPLACE删除所有不需要或不想要的字符
如果IP地址只包含'5。44.4 '没有附加字符,你不需要%,mysql不会使用该表的索引,这将提高查询的速度
| dns_name|
| --|
| 测试|
| dns_name|
| --|
| 测试|
fiddle
2mbi3lxu2#
(That MySQL 8.0的语法; MySQL 5和MariaDB需要不同的语法。