2017-05-21 2 views
0

Ich habe einen IT-Hintergrund, aber mehr in PO/PM Art von Rollen beteiligt, aber bin auf der Suche nach MySQL und habe eine Frage. Ich versuche, einen Text zu analysieren und habe Probleme mit dem Folgenden.Parsing einer Zeichenfolge mit variabler Länge

Ich habe eine Zeichenfolge bestehend aus 0000000000XXXXXXXXXX0000000000. Der Null repräsentieren das einen numerischen Wert (0-9) zwischen 5 und 10 Positionen (variiert) und die XXXXXXXXXX repräsentiert einen einen Zeichensatz immer 10 Positionen und bestehend aus einem A-Z0-9 sondern beginnt immer mit einem Buchstaben A-Z.

Ich möchte diese Zeichenfolge auf 10 Zeichen analysieren. Arbeiten mit Trim, Locate, Mid etc. Scheint schwierig zu sein. Kann jemand helfen?

+1

Können Sie einige Beispieldaten hinzufügen und daraus das gewünschte Ergebnis. Ich denke, ich verstehe, aber besser, um sicher zu sein :) –

+0

Willkommen bei SO, Mark. – David

Antwort

0

Du bist besser dran tun, diese Art von Analyse in Ihrem Client-Code (PHP, Python, was Sie haben), aber wenn Sie unbedingt, dass in MySQL tun müssen, können Sie eine Funktion ähnlich wie diese

DELIMITER // 

CREATE FUNCTION parse_str(val VARCHAR(30)) RETURNS VARCHAR(10) 
BEGIN 
    DECLARE pos INT DEFAULT 6; 

    IF val IS NULL OR CHAR_LENGTH(val) < 15 THEN 
    RETURN NULL; 
    END IF; 

    WHILE pos < 12 DO 
    IF SUBSTRING(val, pos, 1) > '9' THEN 
     RETURN SUBSTRING(val, pos, 10); 
    END IF; 

    SET pos = pos + 1; 
    END WHILE; 

    RETURN NULL; 
END// 

DELIMITER ; 
erstellen

Sie können es dann wie verwenden, so

SELECT parse_str(val) AS parsed 
    FROM table1 

Hier ist SQLFiddle Demo

-1

Sie nicht, ob sagten ‚Trimmen‘ war auf dem INSERT oder SELECT Seite auftreten.

Die DOCS sind ein großartiger Ort, um zu schauen.

MySQL String Functions - TRIM

Können Sie Ihre Frage verbessern und dann lassen Sie das Know ‚Beantworter‘ des edite mit einem Kommentar unterhalb ihrer Antwort?

+0

Dies sollte ein Kommentar sein, keine Antwort. –

Verwandte Themen