MySQLでテキストを検索するために上下のPOSIX文字クラスを使用するにはどうすればよいですか?

dba.stackexchange https://dba.stackexchange.com/questions/2522

  •  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つ以上の大文字が付いた任意の文字列に続いて無料」ですが、もちろん無料はそこではケースに依存しません。

ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top