2017-05-31 3 views
0

This is my db.複数のサブストリングが

フルテキストフィールドには、HTMLタグといくつかのリソースが含まれていると私はすべての「SRC」はそこから属性を取得したいです。いくつかのレコードにはいくつかの 'src'があるかもしれません。

今、私は望む結果を得るためにクエリを書く方法を知りません。 と、これは私のコード

DROP FUNCTION IF EXISTS SPLIT_STR; 
CREATE FUNCTION SPLIT_STR(
    x text, 
    delim VARCHAR(10), 
    co INT 
) 
RETURNS VARCHAR(255) DETERMINISTIC 
BEGIN 
    WHILE co >= 0 DO 
     SET x = RIGHT(x, ((CHAR_LENGTH(x)) - (InStr(x,'src')) + 1)); 
     RETURN SUBSTR(x, 1, 40); 
    END WHILE; 
END 

#--------------------------------------------------- 
SELECT id, SPLIT_STR(test.fulltext, 'src',ROUND ( 
    (
     LENGTH(test.fulltext) 
     - LENGTH(REPLACE (test.fulltext, "src", "")) 
    )/LENGTH("src")   
)) 
FROM test 
WHERE test.fulltext LIKE '%src%' 

あり、その結果は、MySQLにXMLで動作しますExtractValueこの result

+1

列にCSVを保存しないでくださいhttp://stackoverflow.com/questions/41304945/best-type-of-indexing-when-there-is-like-clause/41305027#41305027 http://stackoverflow.com/questions/41215624/sql-table-with-list-entry-vs-sql-table-with-a-for-each-entry/41215681#41215681 – e4c5

答えて

0

機能のようにする必要があります。だから、あなたはこれを使用することができます:

SELECT ExtractValue(test.fulltext, '//img/@src') 
FROM test 
WHERE test.fulltext LIKE '%src%' 
+0

その人が何を要求しているのですか?受信した文字列に5つの "src"値がある場合、埋め込み可能な単一のインスタンスを抽出するだけでなく、それぞれの値が必要ですか? – DRapp

+0

@DRappはい、スペースで区切られたすべての "src"属性を含む1つの文字列を返します。しかし、その事例は著者の提案よりも優れています。カスタム関数を使用する必要はなく、インスタンスの分割には 'SPLIT_STR 'だけが必要です – Timur

関連する問題