주어진 IP 주소 (inet
유형)가 데이터베이스에서 올바른 결과를 검색하는지 묻는 질문에 PostgreSQL에 문제가 있습니다. 나는 내가하고있는 일을 단계적으로 제공 할 것이다. 그런 다음PostgreSQL IP 주소 : 올바른 결과를 inet 데이터로 검색 하시겠습니까?
CREATE TABLE public.test (
ip inet,
a character varying
);
INSERT INTO public.test (ip, a) VALUES
('1111:0000:0101:000A:0002:0003:0004:0005', 'admin1'),
('1111:0001:0101:000A:0002:0003:0004:0005', 'admin2'),
('1111:0011:0101:000A:0002:0003:0004:0005', 'admin3'),
('1111:0111:0101:000A:0002:0003:0004:0005', 'admin4'),
('1111:1111:0101:000A:0002:0003:0004:0005', 'admin5');
난 당신이 (f.ex. LIKE
와) inet
주소의 텍스트 표현을 검색하려면 결과
1111:0000:0101:000A:0002:0003:0004:0005
1111:0001:0101:000A:0002:0003:0004:0005
1111:0011:0101:000A:0002:0003:0004:0005
1111:0111:0101:000A:0002:0003:0004:0005
당신이 말한대로, 우리는의 머리 인 오른쪽 ip를 찾을 수 있습니다. 문자열 (1111 : 0) ip가 중간 또는 끝에 일치하면이 방법으로는이 문제를 해결할 수 없습니다. – ggg
@ggg 예,'inet' 내부를 검색 할 수 없습니다. 왜냐하면 출력이 정규화되어 있기 때문입니다. 당신은 canonized 형태의 내부에서 (이론적으로) 검색 할 수 있지만, 그것은 같지 않을 것입니다 (링크 된 rextester 예제를보십시오). – pozs
문자열의 선두 인 ip뿐만 아니라 문자열 '1111 : 0 '이 중간 또는 끝에 있는지 검색 할 수있는 방법을 찾았습니다. – ggg