2017-05-21 32 views
0

私はITバックグラウンドを持っていますが、PO/PMの種類の役割にはもっと関わっていますが、MySQLを拾って質問があります。私はテキストを解析しようとしており、次のような問題を抱えています。可変長の文字列の解析

私は0000000000XXXXXXXXXX0000000000の文字列を持っています。ゼロのは510位置の間の数値(0-9)を表す(それは異なる)とXXXXXXXXXXは常に10位置の文字セットを表し、A-Z0-9からなるが、常に一文字A-Z始まります。

この文字列を10文字まで解析したいと思います。トリム、ロケート、ミッドなどで作業するのは難しいと思われる。助けてもらえますか?

+1

いくつかのサンプルデータを追加し、そこから目的の結果を得ることができますか?私は理解するが、確かに良いと思う:) –

+0

ようこそ、マーク。 – David

答えて

0

あなたのクライアントコード(PHP、Pythonの、あなたは何を持っている)に、解析のこの種をやっていますが、絶対に行う必要がある場合、MySQLにあなたがこの

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 ; 
と同様の機能を作成することができます方がいいでしょう

あなたは、あなたが言っていなかったので、

SELECT parse_str(val) AS parsed 
    FROM table1 

はここSQLFiddleデモ

-1

あるようにそれを使用することができますか「トリミング」INSERTまたはSELECT側で発生しました。

DOCSは見るのに最適な場所です。

MySQL String Functions - TRIM

あなたの質問を改善して、その答えは以下のコメントをediteの「回答」のノウハウをさせることができますか?

+0

これはコメントであり、答えではありません。 –