查找是否有任何行部分匹配字符串

Ema*_*uel 9 mysql string string-searching

我想查看一个表是否包含给定字符串的任何子字符串。

假设我有一个字符串

somedomain.com 
Run Code Online (Sandbox Code Playgroud)

在数据库中我有:

blabladomain.com
testdomain.com
domain.com
Run Code Online (Sandbox Code Playgroud)

我需要进行一个查询,该查询将返回“domain.com”,因为它是“somedomain.com”的子字符串。

我不知道这在 MySQL 中是否可行。

CREATE TABLE `site_core_antispam_banned_domain` (
`domain_id` int(11) NOT NULL AUTO_INCREMENT,
`domain_name` varchar(255) NOT NULL,
PRIMARY KEY (`domain_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)

ype*_*eᵀᴹ 12

您可以使用LOCATE()- 就像在另一个答案中一样 - 或LIKE

SELECT * 
FROM site_core_antispam_banned_domain
WHERE 'subdomain.com' LIKE CONCAT('%', domain_name, '%') ;
Run Code Online (Sandbox Code Playgroud)

以上将查找与给定字符串的任何部分匹配的域。如果您特别想要与字符串右侧匹配的域(例如,如果要匹配的域是somedomain.com.ro并且您只对*.com.ro结果感兴趣),您可以使模式更具体:

SELECT * 
FROM site_core_antispam_banned_domain
WHERE 'subdomain.com' LIKE CONCAT('%', domain_name) ;
Run Code Online (Sandbox Code Playgroud)

  • @Verace `'domain.com'` 是 `domain_name` 列中的值。它将在结果中。`'subdomain.com'` 是我们正在寻找的参数/字符串(及其所有子字符串) (2认同)