mySQL replace()를 사용하여 여러 레코드의 문자열을 대체하려면 어떻게 해야 합니까?
데이터베이스에는 잘못된 데이터가 한 열에 있는 다수의 레코드가 있습니다. 임베디드 에디터가 유출되어서는 안 될 것들을 탈출하여 생성된 링크를 끊는 것입니다.
모든 레코드의 잘못된 문자를 대체하기 위해 쿼리를 실행하려고 하는데 방법을 찾을 수 없습니다.MySQL에서 기능을 찾았는데 쿼리 내에서 어떻게 사용할 수 있나요?
예를 들어 문자열을 바꾸려면 올바른 구문은 무엇입니까?<
실제 각도보다 작은 브래킷 포함(<
를 포함한 모든 레코드에서<
에서articleItem
열?한 번의 쿼리로 실행할 수 있습니까(즉, 모든 것을 한 번에 선택 및 대체) 아니면 여러 개의 쿼리를 수행해야 합니까?여러 개의 쿼리가 있는 경우에도replace()
둘 이상의 레코드에서 필드의 값을 대체하려면 어떻게 해야 합니까?
매우 일반적인 수준에서
UPDATE MyTable
SET StringColumn = REPLACE (StringColumn, 'SearchForThis', 'ReplaceWithThis')
WHERE SomeOtherColumn LIKE '%PATTERN%'
당신의 경우, 당신은 이것들이 탈출했다고 말하지만, 어떻게 탈출했는지를 명시하지 않았으므로, 그들이 탈출했다고 칩시다.GREATERTHAN
UPDATE MyTable
SET StringColumn = REPLACE (StringColumn, 'GREATERTHAN', '>')
WHERE articleItem LIKE '%GREATERTHAN%'
쿼리는 실제로 문자열 내에서 동작하기 때문에,WHERE
패턴 매칭을 하고 있는 절은 퍼포먼스를 향상시킬 수 없습니다.실제로 서버에 더 많은 작업이 생성됩니다.이 쿼리의 성능을 향상시키는 다른 WHERE 구 멤버가 없는 한 다음과 같이 간단하게 갱신할 수 있습니다.
UPDATE MyTable
SET StringColumn = REPLACE (StringColumn, 'GREATERTHAN', '>')
여러 개를 네스트할 수도 있습니다.REPLACE
콜
UPDATE MyTable
SET StringColumn = REPLACE (REPLACE (StringColumn, 'GREATERTHAN', '>'), 'LESSTHAN', '<')
데이터를 저장할 때와 달리 데이터를 선택할 때도 이 작업을 수행할 수 있습니다.
그래서 다음 대신:
SELECT MyURLString From MyTable
할 수 있다
SELECT REPLACE (MyURLString, 'GREATERTHAN', '>') as MyURLString From MyTable
UPDATE some_table SET some_field = REPLACE(some_field, '<', '<')
체크해 주세요
UPDATE some_table SET some_field = REPLACE("Column Name/String", 'Search String', 'Replace String')
예: 샘플 문자열:
UPDATE some_table SET some_field = REPLACE("this is test string", 'test', 'sample')
열/필드 이름이 있는 EG:
UPDATE some_table SET some_field = REPLACE(columnName, 'test', 'sample')
다음과 같이 저장 프로시저를 작성할 수 있습니다.
CREATE Procedure sanitize_표()
시작한다.
#스페이스를 밑줄로 바꿉니다.
UPDATE Table SET FieldName = REPLACE(FieldName), "",_" 여기서 FieldName은 NULL이 아닙니다.
#점 삭제
UPDATE TABLE SET FieldName = REPLACE(FieldName")입니다. 여기서 FieldName은 NULL이 아닙니다.
#삭제(
UPDATE Table SET FieldName = REPLACE(FieldName,"("") 여기서 FieldName은 NULL이 아닙니다.
#delete (삭제)
UPDATE TABLE SET FieldName = REPLACE(FieldName, "") 여기서 FieldName은 NULL이 아닙니다.
#원하는 문자를 재레이스 또는 삭제
#..........................
끝.
이렇게 하면 테이블에 대한 모듈식 제어가 가능합니다.
또한 저장 프로시저를 일반화할 수 있습니다. 입력 파라미터를 sanitoize하기 위한 테이블을 사용하여 parametric으로 만들 수 있습니다.
이게 도움이 될 거야
UPDATE play_school_data SET title= REPLACE(title, "'", "'") WHERE title = "Elmer's Parade";
결과:
title = Elmer's Parade
언급URL : https://stackoverflow.com/questions/4271186/how-can-i-use-mysql-replace-to-replace-strings-in-multiple-records
'sourcecode' 카테고리의 다른 글
XML 문서에서 문자열로의 (0) | 2022.09.24 |
---|---|
동일한 테이블 내의 여러 스레드에 배치 삽입을 사용한 MySQL 벤치마크 (0) | 2022.09.24 |
MariaDB 일반 로그가 작동하지 않음 (0) | 2022.09.24 |
mysql 함수 GROUPINT이 존재하지 않습니다. (0) | 2022.09.24 |
1개의 쿼리로 여러 개의 문을 노드 검출 (0) | 2022.09.24 |