PostgreSQL - 내 데이터에 백슬래시가 포함되어 있는지 확인하는 방법
-
22-08-2019 - |
문제
SELECT count(*) FROM table WHERE 열은 '%/%'와 유사합니다.
"/"를 포함하는 값의 개수를 알려줍니다.
"\"에 대해서도 동일한 작업을 수행하는 방법은 무엇입니까?
해결책
SELECT count(*)
FROM table
WHERE column ILIKE '%\\\\%';
다른 팁
에서 발췌 문서:
백슬래시는 이미 문자열 리터럴에서 특별한 의미를 갖고 있으므로 백슬래시를 포함하는 패턴 상수를 작성하려면 SQL 문에 두 개의 백슬래시를 작성해야 합니다(이스케이프 문자열 구문이 사용된다고 가정, 섹션 4.1.2.1 참조).따라서 실제로 리터럴 백슬래시와 일치하는 패턴을 작성한다는 것은 명령문에 4개의 백슬래시를 작성한다는 의미입니다.ESCAPE를 사용하여 다른 이스케이프 문자를 선택하면 이를 방지할 수 있습니다.그러면 백슬래시는 더 이상 LIKE에 특별하지 않습니다.(하지만 문자열 리터럴 파서에서는 여전히 특별하므로 두 개가 필요합니다.)
더 나은 아직 - 사용하지 말고 표준 위치를 사용하십시오.
select count(*) from from table where 0 < position( E'\\' in column );
당신은 필요합니다 E'\\\\'
논쟁 때문입니다 LIKE
Regex와 Regex Escape Char는 이미입니다 \
(예 : ~ E'\\w'
인쇄 가능한 숯이 포함 된 모든 문자열과 일치합니다).
참조 문서
제휴하지 않습니다 StackOverflow