Mysql

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

  • April 6, 2018

我想看看一個表是否包含給定字元串的任何子字元串。

假設我有一個字元串

somedomain.com 

在數據庫中我有:

blabladomain.com
testdomain.com
domain.com

我需要進行一個查詢,該查詢將返回“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;

您可以使用LOCATE()- 如在其他答案中一樣 - 或LIKE

SELECT * 
FROM site_core_antispam_banned_domain
WHERE 'subdomain.com' LIKE CONCAT('%', domain_name, '%') ;

以上將查找與給定字元串的任何部分匹配的域。如果您特別想要匹配字元串右側的域(例如,如果要匹配的域是somedomain.com.ro並且您只對*.com.ro結果感興趣),您可以使模式更具體:

SELECT * 
FROM site_core_antispam_banned_domain
WHERE 'subdomain.com' LIKE CONCAT('%', domain_name) ;

引用自:https://dba.stackexchange.com/questions/203206