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, '%'))
これはREGEXP
を使用して問題なく動作します:
SELECT keyword
FROM table
WHERE 'Tell me about admission info' REGEXP keyword;
ただし、これはkeyword
に正規表現のエスケープが含まれていない場合にのみ機能します...
つまりkeyword
には文字、数字、スペースなどのみが含まれますが、これは正常に機能します。
次のようなものを試してください:
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;