PostgreSQL - 내 데이터에 백슬래시가 포함되어 있는지 확인하는 방법

StackOverflow https://stackoverflow.com/questions/706364

  •  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' 인쇄 가능한 숯이 포함 된 모든 문자열과 일치합니다).

참조 문서

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top