복붙노트

[SQL] 여러 문자를 대체 MYSQL 수 있습니까?

SQL

여러 문자를 대체 MYSQL 수 있습니까?

나는 MySQL의 필드에 문자의 무리를 대체하기 위해 노력하고있어. 나는 바꾸기 기능을 알고 있지만 한 번에 하나의 문자열을 대체합니다. 나는 설명서에 적절한 기능을 볼 수 없습니다.

나는 교체하거나 한 번에 여러 문자열을 삭제할 수 있습니까? 예를 들어 내가 대시와 공백을 대체하고 다른 문장 부호를 제거해야합니다.

해결법

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

    1.당신은 체인 기능을 대체 할 수

    당신은 체인 기능을 대체 할 수

    select replace(replace('hello world','world','earth'),'hello','hi')
    

    이 안녕 지구를 인쇄합니다.

    당신은 여러 문자열을 대체하는 하위 쿼리를 사용할 수 있습니다!

    select replace(london_english,'hello','hi') as warwickshire_english
    from (
        select replace('hello world','world','earth') as london_english
    ) sub
    

    아니면 그들을 대체하는 조인을 사용 :

    select group_concat(newword separator ' ')
    from (
        select 'hello' as oldword
        union all
        select 'world'
    ) orig
    inner join (
        select 'hello' as oldword, 'hi' as newword
        union all
        select 'world', 'earth'
    ) trans on orig.oldword = trans.oldword
    

    나는 독자들에게 운동으로 공통 테이블 표현식을 사용하여 번역을 떠날거야;)

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

    2.캐스 케이 딩 여러 문자 교체에 대한 MySQL의 유일한 단순하고 직선적 솔루션입니다.

    캐스 케이 딩 여러 문자 교체에 대한 MySQL의 유일한 단순하고 직선적 솔루션입니다.

    UPDATE table1 
    SET column1 = replace(replace(REPLACE(column1, '\r\n', ''), '<br />',''), '<\r>','')
    
  3. ==============================

    3.나는 당신을 허용하는이에 대한 lib_mysqludf_preg을 사용했습니다 :

    나는 당신을 허용하는이에 대한 lib_mysqludf_preg을 사용했습니다 :

    이 라이브러리를 설치하면이 뭔가를 할 수 있습니다 :

    SELECT preg_replace('/(\\.|com|www)/','','www.example.com');
    

    당신을 줄 것이다 :

    example
    
  4. ==============================

    4.그들은 문자열에 나타나는 모든 곳에서 교체 문자 나 문구를 대체하는 좋은 간단한 작업을 수행합니다. 문장 부호를 정화 할 때하지만 패턴을 볼 필요가 있습니다 - 예를 텍스트, 예를 들어 특정 부분에 공백의 시퀀스 또는 자 단어의 중간에 또는 완전 정지 후. 그런 경우, 정규 표현식은 함수가 훨씬 더 강력 할 것이다 교체합니다. 나쁜 소식은 MySQL이 그런 일을 제공하지 않습니다하지만 좋은 소식은 해결 제공하는 것이 가능하다 -이 블로그 게시물을 참조하십시오.

    그들은 문자열에 나타나는 모든 곳에서 교체 문자 나 문구를 대체하는 좋은 간단한 작업을 수행합니다. 문장 부호를 정화 할 때하지만 패턴을 볼 필요가 있습니다 - 예를 텍스트, 예를 들어 특정 부분에 공백의 시퀀스 또는 자 단어의 중간에 또는 완전 정지 후. 그런 경우, 정규 표현식은 함수가 훨씬 더 강력 할 것이다 교체합니다. 나쁜 소식은 MySQL이 그런 일을 제공하지 않습니다하지만 좋은 소식은 해결 제공하는 것이 가능하다 -이 블로그 게시물을 참조하십시오.

    상기 정규식 대체물의 조합으로 달성 될 수있는 표준 기능을 교체한다. 그것은이 온라인 Rextester 데모의 행동에서 볼 수 있습니다.

    SQL (간결을위한 기능 코드 제외) :

    SELECT txt,
           reg_replace(REPLACE(txt, ' ', '-'),
                       '[^a-zA-Z0-9-]+',
                       '',
                       TRUE,
                       0,
                       0
                       ) AS `reg_replaced`
    FROM test;
    
  5. ==============================

    5.PHP에

    PHP에

    $dataToReplace = [1 => 'one', 2 => 'two', 3 => 'three'];
    $sqlReplace = '';
    foreach ($dataToReplace as $key => $val) {
        $sqlReplace = 'REPLACE(' . ($sqlReplace ? $sqlReplace : 'replace_field') . ', "' . $key . '", "' . $val . '")';
    }
    echo $sqlReplace;
    

    결과

    REPLACE(
        REPLACE(
            REPLACE(replace_field, "1", "one"),
        "2", "two"),
    "3", "three");
    
  6. from https://stackoverflow.com/questions/1671040/can-mysql-replace-multiple-characters by cc-by-sa and MIT license