/ / mysql列のテキストを検索し、句読点も含める方法-mysql、regex

mysqlの列でテキストを検索する方法と、句読点を含める方法 - mysql、regex

私のSQL検索は正規表現を利用しています:

$sql = " select * from table where regexp CONCAT("[[:<:]]", :searchTerm, "[[:>:]]") ";

:searchTermはバインドされた検索変数です。

現在、「well」という用語の検索を実行すると、多数の結果が表示されます。ただし、「Well」をコンマで検索すると、クエリ結果は空になります。

「[[:<:]]」と「[[:>:]]」が単語境界マーカーであり、したがってすべての句読点が無視されるため、これが起こると想定しています。

句読点も含めるようにクエリを構成する方法を知っている人はいますか?

回答:

回答№1は0

組み込みの句読文字クラスを使用できます [:punct:] 句読点文字に一致するには、 ? これは、その前の文字または文字クラスの0または1つに一致します。この場合、定義した文字クラスになります。

例えば:

$sql = "select * from table where regexp CONCAT("[[:<:]]", :searchTerm, "[[:punct:]]?[[:>:]]") ";

これは公正な警告です。MySqlの経験があまりなく、上記の例をテキストで送信しませんでした。これは機能するか、少なくとも正しい方向を示します。 正規表現演算子 mysqlドキュメントのセクション。

さらに、私は文字が何であるかわからない組み込みの句読文字クラスに含まれていますが、角括弧を使用して独自の句読文字を定義し、必要な句読文字のみを含めることができます。例えば [,.!?;:]