Wie benutze ich die oberen und unteren POSIX -Zeichenklassen, um Text in MySQL zu durchsuchen?

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

  •  16-10-2019
  •  | 
  •  

Frage

Ich möchte nach einem Textkörper suchen, um herauszufinden, wann ein bestimmtes Wort oberes Häkchen ist. MySQL hat eine Regexp -Funktion mit der POSIX -Charakterklasse [[: obere:]], aber für mein Leben kann ich sie nicht dazu bringen, Ergebnisse zurückzugeben.

Sagen Sie, ich möchte eine Spalte nach dem String Literal "frei" nur in Upper Case suchen.

Nehmen wir an, die Tischstruktur ist so etwas wie:

CREATE TABLE article_body (
id INT NOT NULL AUTO_INCREMENT,
article_id INT NOT NULL,
summary VARCHAR(255),
body_text TEXT,
PRIMARY KEY(id));

Ich möchte Body_Text -Spalten finden, in denen sich das Wort frei in allen Großbuchstaben befindet, z. B.

SELECT id, summary FROM article_body WHERE body_text REGEXP '[[:upper:]]+FREE';

Aber natürlich ist diese Syntax ungültig.

Hilfe?

War es hilfreich?

Lösung

Aus dem Artikel über Mysql Regexp:

Regexp ist nicht fallempfindlich, außer wenn sie mit binären Zeichenfolgen verwendet werden.

Eine einfache Lösung wäre, die zu verwenden BINÄR Operator:

SELECT * FROM article_body WHERE body_text REGEXP BINARY "FREE";

Wenn Ihr Beispiel nicht funktioniert, ist die Art und Weise, wie ich es interpretiere, "jede Zeichenfolge mit einem oder mehreren Großbuchstaben, gefolgt von freier", aber natürlich ist dort frei.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top