programing

MySQL 및 MariaDB가 앰퍼샌드를 포함하는 문자열을 데이터베이스에서 볼 수 있을 때 보고하지 않음

muds 2023. 6. 15. 22:06
반응형

MySQL 및 MariaDB가 앰퍼샌드를 포함하는 문자열을 데이터베이스에서 볼 수 있을 때 보고하지 않음

오래된 프로그래밍 오류로 인해 데이터베이스에 다음과 같은 값이 포함된 레코드가 많이 있습니다.

"https://central.bac-lac.gc.ca/.item/?app=Census1901&op=&img&id=z000058993"

다음을 포함해야 하는 경우:

"https://central.bac-lac.gc.ca/.item/?app=Census1901&op=img&id=z000058993"

나는 그것들을 대체하려고 노력했습니다.

UPDATE Pages SET image=replace(image, '&img','img')  where locate('&img', image) > 0

그러나 MySQL과 MariaDB는 NO 값에 '&img'가 포함되어 있다고 보고합니다.예를 들어, 다음과 같은 문제가 발생합니다.

SELECT COUNT(*) FROM Pages where locate('&img', image) > 0

0개의 레코드를 반환합니다.레코드를 나열하면 실수가 포함된 레코드가 수천 개 있지만 MySQL과 MariaDB는 존재하지 않는다고 주장합니다.WHERE 절을 제거하면 다음과 같이 됩니다.

UPDATE Pages SET image=replace(image, '&img','img')

서버에서 변경할 값을 찾을 수 없다고 주장합니다.내가 뭘 잘못하고 있는 거지?

데이터베이스의 앰퍼샌드(&)는 다음과 같이 저장될 수 있습니다.&(HTML 인코딩 이후).시도해 보세요SELECT COUNT(*) FROM Pages WHERE LOCATE('&img', image) > 0;그것을 확인하기 위해.

언급URL : https://stackoverflow.com/questions/75105411/mysql-and-mariadb-report-no-strings-containing-ampersand-when-i-can-see-them-in

반응형