MySQLでテキストを検索するために上下のPOSIX文字クラスを使用するにはどうすればよいですか?
-
16-10-2019 - |
質問
テキストの本文を検索して、特定の単語が上部のケースになったことを確認したいと思います。 MySQLには、POSIX文字クラス[[:upper:]]を使用したregexp関数がありますが、私の人生では、結果を返すことができません。
文字通りの文字通りの「無料」の列を大文字でのみ検索したいとします。
テーブル構造が次のようなものであるとしましょう。
CREATE TABLE article_body (
id INT NOT NULL AUTO_INCREMENT,
article_id INT NOT NULL,
summary VARCHAR(255),
body_text TEXT,
PRIMARY KEY(id));
body_text列を見つけたいのは、すべての大文字であるという単語のない列を見つけたいです。
SELECT id, summary FROM article_body WHERE body_text REGEXP '[[:upper:]]+FREE';
しかし、もちろんその構文は無効です。
ヘルプ?
解決
の記事から mysql regexp:
regexpは、バイナリ文字列で使用される場合を除き、ケースに敏感ではありません。
簡単な解決策は、を使用することです バイナリ オペレーター:
SELECT * FROM article_body WHERE body_text REGEXP BINARY "FREE";
あなたの例がうまくいかない理由については、私がそれを解釈する方法は、「1つ以上の大文字が付いた任意の文字列に続いて無料」ですが、もちろん無料はそこではケースに依存しません。
所属していません dba.stackexchange