postgresql – 如何从postgres sql中的inet值中提取八位字节?
发布时间:2020-12-13 15:50:22 所属栏目:百科 来源:网络整理
导读:我想将inet格式的IPv4地址转换为整数组件. 例如,将’101.255.30.40’变为oct1 = 101,oct2 = 255,oct3 = 30,oct4 = 40. 如果我将inet转换为varchar,那么有正则表达式应该这样做,但这似乎是不优雅的.是否有一行函数用于返回inet的第n个八位字节? select inet_
我想将inet格式的IPv4地址转换为整数组件.
例如,将’101.255.30.40’变为oct1 = 101,oct2 = 255,oct3 = 30,oct4 = 40. 如果我将inet转换为varchar,那么有正则表达式应该这样做,但这似乎是不优雅的.是否有一行函数用于返回inet的第n个八位字节? select inet_to_octet('101.255.30.40',4) as temp; -- returns temp=40? 解决方法
除非您想尝试将函数贡献给inet数据类型,否则您需要依赖基于字符串的版本.也许把这样的东西(但有一些错误检查)放到一个SQL函数中以便于访问?:
CREATE OR REPLACE FUNCTION extract_octet(inet,integer) RETURNS integer AS $$ SELECT ((regexp_split_to_array(host($1),E'.'))[$2])::int; $$LANGUAGE SQL; select extract_octet(inet '192.26.22.2',2) Output: 26 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |