MySQL – Zeichen in Zeichenkette zählen.

In MySQL gibt es keine Funktion um ein bestimmtes Zeichen in einer Zeichenkette zu zählen. Um die Anzahl eines Zeichens in einer Zeichenkette zu ermitteln, kann jedoch eine einfache Formel angewendet werden. So kann von der Gesamtzahl der Zeichen die Anzahl ohne das gesuchte Zeichen abgezogen werden. Dies kann bereits in einer einfachen Abfrage ausgeführt werden:

SELECT
     (LENGTH(column_name) - LENGTH(REPLACE(column_name, '0', ''))) AS charCount
FROM table_name;

Diese sehr einfache Abfrage verwendet die Funktion LENGTH  welche in diesem Fall für die Ermittlung der Anzahl verwendet werden kann. Sollte aber eine Zeichenkette verwendet werden, in welcher Multi-Byte-Zeichen vorhanden sind, so sollte statt LENGTH  die Funktion CHAR_LENGTH  verwendet werden:

SELECT
     (CHAR_LENGTH(column_name) - CHAR_LENGTH(REPLACE(column_name, '0', ''))) AS charCount
FROM table_name;

Um nun nicht in der jeder Abfrage diese Berechnung selbst durchführen zu müssen kann eine Funktion in MySQL erstellt und in einer Abfrage verwendet werden. Um die Funktion zu erstellen kann das folgende Statement ausgeführt werden. Die Funktion steht anschließend in der gesamten Datenbank zur Verfügung:

CREATE FUNCTION getCharCount (colValue VARCHAR(255), searchValue CHAR(1))
RETURNS INT NO SQL 
RETURN (CHAR_LENGTH(colValue) - CHAR_LENGTH(REPLACE(colValue, searchValue, '')));

Mit dieser Funktion kann nun die folgende Abfrage ausgeführt werden:

SELECT getCharCount(column_name, '0') AS charCount FROM table_name;

Um nun jedoch noch die Anzahl einer Zeichenkette zu ermitteln, muss die Funktion erweitert werden. So muss die bereits ermittelte Differenz durch die Länge des Suchworts geteilt werden um die tatsächliche Anzahl der Treffer zu bekommen:

CREATE FUNCTION getCharCount (colValue VARCHAR(255), searchValue VARCHAR(255))
RETURNS INT NO SQL 
RETURN (CHAR_LENGTH(colValue) - CHAR_LENGTH(REPLACE(colValue, searchValue, '')))
      / CHAR_LENGTH(searchValue);

Auf StackOverflow habe ich diese Lösung für ein Problem beschrieben.

sebastianbrosch

Ich bin gelernter Fachinformatiker und konnte Erfahrungen in HTML, CSS, JavaScript, jQuery, PHP sowie VB.NET sammeln. In diesem Blog schreibe ich über meine Probleme und Erfahrungen sowie Aritkel aus dem Gebiet der Anwendungsentwicklung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.