[SQL] MySQL의 모든 필드를 교체
SQLMySQL의 모든 필드를 교체
나는 REPLACE 명령을 사용하여 테이블의 컬럼에서 일부 문자를 교체해야합니다. 내가 명령이 열 이름을 필요로 교체 할 것을 알고, 다음 (다음 예에서 'A'문자) 변화에 텍스트와 새 텍스트 (다음과 같은 경우, 'E'문자).
UPDATE my_table SET my_column = REPLACE (my_column,'a','e' );
그래서이 명령을 실행하면 'E'문자로 MY_TABLE 테이블의 my_column 열에서 모든 'A'항목을 변경됩니다.
내가 실행해야한다면 무엇을 모든 열에 대한 명령뿐 아니라 하나 교체? 이것이 가능한가?
감사
해결법
-
==============================
1.모든 컬럼에 값을 교체해야하는 SQL 쿼리를 생성하려면 다음 SQL 쿼리를 사용합니다.
모든 컬럼에 값을 교체해야하는 SQL 쿼리를 생성하려면 다음 SQL 쿼리를 사용합니다.
select concat( 'UPDATE my_table SET ', column_name, ' = REPLACE(', column_name, ', ''a'', ''e'');') from information_schema.columns where table_name = 'my_table';
이 SQL 쿼리를 실행 한 후 단순히 모든 값을 대체하는 모든 쿼리를 실행합니다.
일부 인터넷 검색 후 테스트되지 않은
이 같은 코어와 저장 프로 시저를 만듭니다. 그것은 테이블의 이름을 받아 들일 수, 값은 찾을 수 및 대한 값 대체 할 수 있습니다.
주요 아이디어는 사용하는 것입니다 :
아래 부분의 코드 (테스트되지 않은)를 참조하십시오.
DECLARE done INT DEFAULT 0; DECLARE cur1 CURSOR FOR SELECT column_name FROM information_schema.columns WHERE table_name = 'my_table'; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; OPEN cur1; REPEAT SET s = concat( 'UPDATE my_table SET ', column_name, ' = REPLACE(', column_name, ', ''a'', ''e'');'); PREPARE stmt2 FROM s; EXECUTE stmt2; FETCH cur1 INTO a; UNTIL done END REPEAT; CLOSE cur1;
-
==============================
2.나는 하나의 작은 변화를 만들어 :
나는 하나의 작은 변화를 만들어 :
select concat( 'UPDATE ', table_name, ' SET ', column_name, ' = REPLACE(', column_name, ', ''OLDTEXT'', ''NEWTEXT'');') from information_schema.columns where table_name = 'TABLENAME';
어느 TABLENAME의 변수 (조금 덜 입력)를 사용합니다 - 만 대문자로 물건을 교체해야하므로.
또한, 나는 처음에는 이해하지 못했지만, 이것은 단지 출력이 다음 실행해야 SQL 쿼리의 목록은 실제로 코드를 대체 할 것입니다. 도움이 되었기를 바랍니다...
-
==============================
3.MySQL의 물건을 자주 PHP가 포함되어 있기 때문에이 일부 PHP와 트릭을 할 것입니다. 테스트 및 작동 :)
MySQL의 물건을 자주 PHP가 포함되어 있기 때문에이 일부 PHP와 트릭을 할 것입니다. 테스트 및 작동 :)
<?php $host = 'localhost'; $user = 'root'; $pass = 'yourpass'; $db = 'your_database_name'; $connection = mysql_connect($host, $user, $pass); mysql_select_db($db); $thisword = "this one should be"; $shouldbe = "like this"; $thistable = "your_table_name"; MySQL_replace_all($thisword, $shouldbe, $thistable); function MySQL_replace_all($thisword,$shouldbe,$thistable){ $cnamnes = "SHOW columns FROM " . $thistable; $result = mysql_query($cnamnes); while($columnname = mysql_fetch_row($result)){ $replace_SQL = "UPDATE $thistable SET ". $columnname[0] ." = REPLACE(". $columnname[0] .",'". $thisword ."', '". $shouldbe ."');"; echo $replace_SQL . "<br>"; mysql_query($replace_SQL); } } ?>
-
==============================
4.당신은 당신이 원하는 것을 할 수 없습니다. 그것은 나를라면, 난 열 이름의 목록을 내 편집기에서 빠른 정규식 검색을 수행하고 교체 할 것입니다.
당신은 당신이 원하는 것을 할 수 없습니다. 그것은 나를라면, 난 열 이름의 목록을 내 편집기에서 빠른 정규식 검색을 수행하고 교체 할 것입니다.
찾기 : (+).
교체 : UPDATE MY_TABLE SET \ 1 = REPLACE (\ 1, 'A', 'E');
from https://stackoverflow.com/questions/3145076/replace-all-fields-in-mysql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 왜 C #을 플로트에서 SQL 플로트 다른입니다 (0) | 2020.05.15 |
---|---|
[SQL] (SQL Server에 대한 GROUP_CONCAT a.k.a)를 CSV로 병합 행 값 (0) | 2020.05.15 |
[SQL] MySQL을 TYPE을 CREATE (0) | 2020.05.15 |
[SQL] 선택 TOP X (또는 아래) MySQL의 숫자 값에 대한 백분율 (0) | 2020.05.14 |
[SQL] 와일드 카드 검색 성능 (%%)를 향상 MYSQL (0) | 2020.05.14 |