web-dev-qa-db-ja.com

部分文字列を含むSELECT MySQLフィールド

MySQLでは、LIKEの使用は非常に一般的です。次のように使用します:WHERE field LIKE '%substring%'。サブストリングがあり、フィールドには完全なストリングがあります。しかし、私が必要とするのは反対です。フィールドにサブストリングがあります。したがって、文字列の部分文字列を含む行が必要です。テーブルが次のとおりであると仮定します。

----+-------------------
 id | keyword
----+-------------------
  1 | admission
----+-------------------
  2 | head of the dept
----+-------------------

ユーザーからの文字列があります:Tell me about admission info。これはユーザー文字列のサブストリングであるため、admissionを返すようなMySQLクエリが必要です。何かのようなもの:

SELECT keyword FROM table WHERE (keyword is a substring of 'Tell me about admission info')

前もって感謝します。

[〜#〜] like [〜#〜] 演算子を探しています

SQLの単純な正規表現比較を使用したパターンマッチング。 1(TRUE)または0(FALSE)を返します。 exprまたはpatがNULLの場合、結果はNULLです。

何かのようなもの

SELECT  keyword 
FROM    table 
WHERE   ('Tell me about admission info' LIKE CONCAT('%', keyword, '%'))

SQL Fiddle DEMO

17
Adriaan Stander

これはREGEXPを使用して問題なく動作します:

SELECT  keyword 
FROM    table 
WHERE   'Tell me about admission info' REGEXP keyword;

ただし、これはkeyword正規表現のエスケープが含まれていない場合にのみ機能します...

つまりkeywordには文字、数字、スペースなどのみが含まれますが、これは正常に機能します。

2
F. Hauri

次のようなものを試してください:

SELECT CASE WHEN 'Tell me about admission info' 
   LIKE CONCAT('%',`keyword`,'%')
   THEN `keyword` else null END as `keyword`

FROM    table1

WHERE CASE WHEN 'Tell me about admission info' 
  LIKE CONCAT('%',`keyword`,'%')
  THEN `keyword` else null END is not null;

SQL Fiddle ..

0
7alhashmi