Как выделить часть текста на MySQL?

0

У меня есть столбец, сохраненный как LONGTEXT в mysql. Этот текст сохраняет богатый текст. В настоящее время я читаю весь текст, а затем исправляю его с помощью javascript, чтобы получить первые 100 символы, чтобы не разбить слово в его середине.

Но этот способ не кажется лучшим способом сделать это. Я хочу выбрать резюме напрямую с помощью запроса, но я также хочу быть осторожным, чтобы не включать символы, которые являются html-тегами.

Функция внизу выглядит нормально, чтобы удалить html.

SET GLOBAL log_bin_trust_function_creators=1;
DROP FUNCTION IF EXISTS fnStripTags;
DELIMITER |
CREATE FUNCTION fnStripTags( Dirty varchar(4000) )
RETURNS varchar(4000)
DETERMINISTIC 
BEGIN
  DECLARE iStart, iEnd, iLength int;
  WHILE Locate( '<', Dirty ) > 0 And Locate( '>', Dirty, Locate( '<', Dirty )) > 0 DO
    BEGIN
      SET iStart = Locate( '<', Dirty ), iEnd = Locate( '>', Dirty, Locate('<', Dirty ));
      SET iLength = ( iEnd - iStart) + 1;
      IF iLength > 0 THEN
        BEGIN
          SET Dirty = Insert( Dirty, iStart, iLength, '');
        END;
      END IF;
    END;
  END WHILE;
  RETURN Dirty;
END;
|
DELIMITER ; 
Теги:
text
summarization

1 ответ

0
Лучший ответ

часть решения состоит в том, чтобы выбрать текстовое разделенное использование

Это mysql, как функция php strip_tags

 DROP FUNCTION IF EXISTS htmlStrip;
CREATE FUNCTION htmlStrip(pmXml longtext)RETURNS longtext
DETERMINISTIC
htmlStrip:
BEGIN 
        DECLARE vStart INTEGER ;
    DECLARE vEnd INTEGER ;
    DECLARE vResult LONGTEXT;
    DECLARE vCount1 INTEGER;
    DECLARE vCount2 INTEGER;

    SET vResult:=pmXml;
    SET vCount1:=LENGTH(vResult)-LENGTH(REPLACE(vResult,'<',''));
    SET vCount2:=LENGTH(vResult)-LENGTH(REPLACE(vResult,'>',''));
    IF vCount1<>vCount2 THEN 
              RETURN 'Input Error'; 
    END IF;

    WHILE (LOCATE('<',vResult) OR LOCATE('>',vResult)) DO
         SET vStart:=LOCATE('<',vResult);
         SET vEnd:=LOCATE('>',vResult);
         SET vResult:=REPLACE(vResult,SUBSTRING(vResult,vStart,vEnd-vStart+1),'');
    END WHILE;
    RETURN vResult;
END;

    SELECT htmlStrip('<html>hello<body> how r u?</body></html>') AS Result

Result
--------
hello how r u?

поэтому вам нужно использовать substring + strip_tags

  • 0
    Вы уверены в этой функции? Я попробовал это, и это заняло много времени, и он не дал результата до сих пор, как будто он входит в бесконечный цикл.
  • 0
    Я беру эту функцию из комментариев сайта MySQL. Я ссылаюсь на эту страницу: dev.mysql.com/doc/refman/5.0/en/string-functions.html , он запускает эту функцию и получает результаты, каков размер вашего поля?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню