sourcecode

MariaDB 구문 오류 없이 치환하는 방법

copyscript 2022. 9. 22. 00:13
반응형

MariaDB 구문 오류 없이 치환하는 방법

SQL의 치환 예를 참조하십시오. MySQL/MariaDB 데이터베이스:

UPDATE wp_posts SET post_content = REPLACE(post_content, ' ', ' ');

... 단, 이 스테이트먼트는 에러를 발생시킵니다.

#1064 - You have an error in your SQL syntax; check the manual that 
corresponds to your MariaDB server version for the right syntax to 
use near ''&nbsp)' at line 1

아, 그렇군요.''그리고.)'- 백슬래시로 세미콜론을 탈출하려고 했습니다.\:

UPDATE wp_posts SET post_content = REPLACE(post_content, '&nbsp\;', ' ');

...하지만 거의 같은 오류를 얻습니다.실제로 MySQL/MariaDB의 SQL 예는 많이 볼 수 있지만 세미콜론이나 앰퍼샌드 중 어느 쪽도 이스케이프되지 않습니다.

편집

@Barmar는 명령줄에서 SQL을 실행할 것을 권장합니다.MariaDB에 로그인하여 use mydatabase를 입력했습니다.프롬프트가 현재 db로 바뀌어 위와 같이 명령어를 입력했습니다.이 명령어는 오류 없이 받아들여졌으며, 2300개 이상의 일치가 발견되었지만 아무것도 변경되지 않았습니다.

MariaDB [mydatabase]> UPDATE wp_posts SET post_content = REPLACE(post_content, ' ', ' ');
Query OK, 0 rows affected (0.25 sec)
Rows matched: 2330  Changed: 0  Warnings: 0

왜 아무것도 바뀌지 않았지?

편집 - 포함 위치

점점 더 혼란스러워지고 있어요.phpMyAdmin 내에서:

SELECT * from wp_posts WHERE post_content LIKE '%Â %';<<== 1715 행을 반환합니다.

또한 phpMyAdmin:

UPDATE wp_posts SET post_content = REPLACE(post_content, 'Â ', ' ') WHERE post_content LIKE '%Â %';<<== 일치하는 행 0개를 반환합니다.

CLI에서:

SELECT COUNT(*) from wp_posts WHERE post_content LIKE 'Â ';<<== 0을 반환함

SELECT COUNT(*) from wp_posts WHERE post_content LIKE 'Â';<<== 8을 반환한다

나는 이 차이점들을 어떻게 생각해야 할지 전혀 모르겠다.확실히 그 펑키는 알아Âwp_discloss 전체에 존재합니다.phpMyAdmin을 사용하여 데이터를 확인할 수 있습니다.

'Â&nbsp;'당신이 생각하는 그런 문제가 아니라고 믿게 만들어요

디버깅 실행, 실행SELECT HEX(col)...수정하려고 하는 소스 회선 중 하나에 대한 것입니다.찾을 수 있을 것이다.C2A016진수 문자열에 입력됩니다.이것이 utf8 부호화입니다.&nbsp;htmlentity를 사용하는 경우

문자 집합에도 문제가 있을 수 있습니다.phpmyadmin에서 유효한 설정을 확인해 주세요.SHOW VARIABLES LIKE 'char%';; 및SHOW CREATE TABLElatin1 사이에 혼동이 있을 수 있기 때문에 요청드립니다.A0및 UTF-8C2A0혼란이 가중되고 있습니다.

많은 상황에서 '하드 스페이스'(16진수)A0)는, 통상의 공간(표준)처럼 보입니다.20무엇이 무엇인지 결정하는 것이 더욱 어려워집니다.

요약:

  1. 다음 웹 사이트를 통해 실제 기능을 확인하세요.SELECT HEX()
  2. 설정 수정 - latin1을 끝까지 사용하거나 utf8/utf8mb4를 끝까지 사용합니다.
  3. 그런 다음 교체 방법을 다시 생각해 보십시오(2단계에서 수정되지 않은 경우).

나는 주로 본다A0Microsoft Word 문서에서 가져오지만 다른 소스가 있을 수 있습니다.

latin1로 잘못 해석된 경우 utf8은C2A0로서 나타나다Â(A-circumflex와 공백).

언급URL : https://stackoverflow.com/questions/56067765/how-to-replace-nbsp-without-mariadb-syntax-error

반응형