복붙노트

[SQL] 와일드 카드로 교체 MySQL은

SQL

와일드 카드로 교체 MySQL은

나는 새로운 문자열로 특정의 XML 노드를 대체 할 SQL 업데이트를 작성하려고 해요 :

UPDATE table
SET Configuration = REPLACE(Configuration,
     "<tag>%%ANY_VALUE%%</tag>"
     "<tag>NEW_DATA</tag>");

그래서

<루트> <태그> SDADAS

가된다

<루트> <태그> NEW_DATA

요청이 유형의 누락 구문 메신저가 있습니까?

해결법

  1. ==============================

    1.업데이트 : MySQL을 8.0 함수 REGEX_REPLACE있다 ().

    업데이트 : MySQL을 8.0 함수 REGEX_REPLACE있다 ().

    아래는 여전히 8.0 전에 MySQL의 모든 버전에 적용 2014에서 내 대답입니다 :

    단지 다른 상수 문자열에 대한 하나의 상수 문자열을 대체 () 등 와일드 카드, 패턴, 정규 표현식, REPLACE에 대한 지원하지 않습니다 () 교체.

    당신은 문자열의 주요 부분 문자열의 후행 부분을 선택하는, 뭔가 복잡한을 시도 할 수 있습니다 :

    UPDATE table
    SET Configuration = CONCAT(
          SUBSTR(Configuration, 1, LOCATE('<tag>', Configuration)+4),
          NEW_DATA,
          SUBSTR(Configuration, LOCATE('</tag>', Configuration)
        )
    

    당신은 <태그>을 여러 번해야하지만이 경우에 작동하지 않습니다.

    당신은 응용 프로그램에 행 다시 가져 오기 당신의 마음에 드는 언어를 사용하여 문자열 교체를 수행하고 행 등을 게시 할 수 있습니다. 즉, 각 행의 세 단계.

  2. ==============================

    2.이러한 문제를 해결하기 위해 오라클의 REGEXP_REPLACE로 MySQL에는 붙박이 기능이 없습니다.

    이러한 문제를 해결하기 위해 오라클의 REGEXP_REPLACE로 MySQL에는 붙박이 기능이 없습니다.

    우리는 타사 기능을 사용하거나 우리는 우리의 자아를 구현해야합니다.

    그래서이 링크가 해결 문제에 대한 도움이되기를 바랍니다.

    http://www.nacodes.com/2013/01/29/Create-Function-MySQL-Regex-replace-TRIM-for-MySQL

  3. from https://stackoverflow.com/questions/21001172/mysql-for-replace-with-wildcard by cc-by-sa and MIT license