web-dev-qa-db-ja.com

行の一部が文字列と一致するかどうかを確認します

テーブルに特定の文字列のサブ文字列が含まれているかどうかを確認したい。

文字列があるとしましょう

somedomain.com 

データベースに私が持っています:

blabladomain.com
testdomain.com
domain.com

「somedomain.com」の部分文字列なので、「domain.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;
6
Emanuel

あなたは他の答えと同じようにLOCATE()またはLIKEを使うことができます:

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

上記は、特定の文字列のany partに一致するドメインを探します。文字列の右側に一致するドメインが特に必要な場合(たとえば、照合するドメインがsomedomain.com.roそしてあなたは*.com.ro結果)、パターンをより具体的にすることができます:

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

私はあなたが必要とするのはMySQLのLocate関数だけです:

SELECT domain_id,domain_name as a 
FROM site_core_antispam_banned_domain 
where Locate(domain_name,'subdomain.com')!=0;

お役に立てれば。

3
Tayyab

それを試してみてください:

 SELECT * 
 FROM site_core_antispam_banned_domain
 WHERE RIGHT(domain_name,10)='domain.com';
2
Pankaj Kumar

LIKEを使用します。文字列の任意の部分にある部分文字列を見つけるには:

SELECT domain FROM mytable WHERE domain LIKE '%domain.com%';

これはあなたが尋ねたことをします。ただし、例では「domain.com」は常に文字列の最後にあります。特定のサブストリングで終わるストリングを検索するには、次のようにします。

column LIKE '%substring'

LIKEは大文字と小文字を区別しないことに注意してください。大文字と小文字を区別する検索を実行する場合は、LIKELIKE BINARYに置き換えます。

2