當詢問給定的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');
然後我想通過'1111:0'
搜索ip
,應該找的結果
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'內搜索,因爲它的輸出是標準化的。您可以(理論上)在經過標準化的表格內進行搜索,但這不會相同(請參閱鏈接的rextester示例)。 – pozs
我找到一種方法,我們不僅可以搜索作爲字符串頭部的ip,還可以搜索字符串'1111:0'位於中間還是結尾。 – ggg