저는 PostgreSQL을 처음 사용합니다. 아래 업데이트 쿼리를 실행하는 동안 아래 오류가 발생합니다.
update useremails ue
SET ue.useinstitutionid=id.InstitutionID from instdomains id
where ue.email REGEXP CONCAT('^.*[.@]',id.DomainMask,'$');
오류: "REGEXP" 또는 그 부근에서 구문 오류가 발생했습니다.
MySQL 쿼리
UPDATE useremails
JOIN instdomains ON useremails.email
REGEXP CONCAT('^.*[.@]',instdomains.DomainMask,'$')
SET useremails.useinstitutionid=instdomains.InstitutionID;
이 쿼리를 mysql에서 Postgresql로 변환했습니다. postgresql에서 이 쿼리를 어떻게 다시 작성할 수 있습니까?
Postgres의 정규식 연산자는 ~
, not REGEXP
(MySQL 및 SQLite에서 사용)입니다. 이 버전을 사용해 보세요:
UPDATE useremails ue
SET useinstitutionid = id.InstitutionID
FROM instdomains id
WHERE ue.email ~* ('^.*[.@]' || id.DomainMask); -- case insensitive, for a case
-- sensitive match just use ~
정규 LIKE
연산자를 사용하여 위의 업데이트를 거의 쉽게 표현할 수 있습니다 .
UPDATE useremails ue
SET useinstitutionid = id.InstitutionID
FROM instdomains id
WHERE ue.email LIKE '%.' || id.DomainMask || '%' OR
ue.email LIKE '%@' || id.DomainMask || '%';
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다