GBase 8s 检查是否是IP且转数值函数

GBase 8s中没有ip类型字段(如inet),对于判断字符串是否是IP地址,需要自己编写相应的函数。
如下,实现检查输入的字符串是否为IPv4地址(-1否),且转换成数值类型:

-- function ip to num, if not ip return -1
DROP FUNCTION IF EXISTS func_ip2num(varchar);
CREATE FUNCTION func_ip2num(p_ip varchar(20))
RETURNS int8 WITH (NOT VARIANT);define v_ip1 varchar(10);define v_ip2 varchar(10);define v_ip3 varchar(10);define v_ip4 varchar(10);define v_ipnum int8;define v_delpos smallint;define v_curpos smallint;ON EXCEPTIONRETURN -1;END EXCEPTION;let v_ipnum = -1;-- ip part1let v_delpos = charindex('.',p_ip);let v_ip1 = substr(p_ip,1,v_delpos - 1)::int;-- ip part2let v_curpos = v_delpos + 1;let v_delpos = charindex('.',p_ip,v_curpos);let v_ip2 = substr(p_ip,v_curpos,v_delpos - v_curpos)::int;-- ip part3let v_curpos = v_delpos + 1;let v_delpos = charindex('.',p_ip,v_curpos);let v_ip3 = substr(p_ip,v_curpos,v_delpos - v_curpos)::int; -- ip part4let v_curpos = v_delpos + 1;let v_ip4 = substr(p_ip,v_curpos)::int;IF v_ip1 < 0 OR v_ip2 < 0 OR v_ip3 < 0 OR v_ip4 < 0 ORv_ip1 > 255 OR v_ip2 > 255 OR v_ip3 > 255 OR v_ip4 > 255 THENRETURN -1;END IF;let v_ipnum = v_ip1 * 16777216 + v_ip2 * 65536 + v_ip3 * 256 + v_ip4;RETURN v_ipnum;
END FUNCTION;

示例:

SELECT func_ip2num('192.168.100.100') FROM dual;  -- 返回:3232261220SELECT func_ip2num('192.-168.100.100') FROM dual;  -- 返回 -1,不是IPSELECT func_ip2num('292.-168.100.100') FROM dual;  -- 返回 -1,不是IP

注:当然仅仅需要判断是否为IP,也可以使用regexp_like功能:

SELECT regexp_like('192.168.100.100', '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$') FROM dual;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/14174.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据分析案例——电商平台数据集

数据来源于阿里云天池&#xff0c;为淘宝app平台在2014年11月18日-12月18日的数据。 数据处理 导入相关的包&#xff0c;设置seaborn的绘图风格&#xff1a; import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns sns.set()使用o…

Little Snitch for Mac(小飞贼防火墙软件)v5.7.6注册激活版

Little Snitch for Mac&#xff0c;也被称为“小飞贼”防火墙软件&#xff0c;是一款专为Mac用户设计的网络安全工具。以下是关于Little Snitch for Mac的一些主要特点&#xff1a; Little Snitch for Mac(小飞贼防火墙软件)v5.7.6注册激活版下载 强大的监控能力&#xff1a;Li…

Rust:如何在 Windows 的 Linux 子系统(WSL)下安装

一、安装步骤 在Windows Subsystem for Linux (WSL)下安装Rust&#xff0c;可以按照以下步骤进行&#xff1a; 打开WSL终端&#xff1a; 首先&#xff0c;确保你的WSL已经安装并正常运行。你可以在Windows搜索栏中输入“WSL”并选择你安装的Linux发行版&#xff08;如Ubuntu&a…

leetcode-顺时针旋转矩阵-111

题目要求 思路 1.假设现在有一个矩阵 123 456 789 2.我们可以根据19这个对角线将数据进行交换&#xff0c;得到矩阵 147 258 369 3.然后将矩阵每一行的数据再翻转&#xff0c;得到矩阵 741 852 963 代码实现 class Solution { public:vector<vector<int> > rot…

Django自定义模板标签与过滤器

title: Django自定义模板标签与过滤器 date: 2024/5/17 18:00:02 updated: 2024/5/17 18:00:02 categories: 后端开发 tags: Django模版自定义标签过滤器开发模板语法Python后端前端集成Web组件 Django模板系统基础 1. Django模板语言概述 Django模板语言&#xff08;DTL&…

【译】MySQL复制入门: 探索不同类型的MySQL复制解决方案

原文地址&#xff1a;An Introduction to MySQL Replication: Exploring Different Types of MySQL Replication Solutions 在这篇博文中&#xff0c;我将深入介绍 MySQL 复制&#xff0c;回答它是什么、如何工作、它的优势和挑战&#xff0c;并回顾作为 MySQL 环境&#xff0…

【Qt】深入探索Qt主窗口与菜单栏:构建高效用户界面的实践指南

文章目录 前言1. 什么是Main Window?2. 详细了解一下其中的 菜单栏&#xff1a;2.1. 创建菜单栏2.2. 添加快捷键2.3. 添加子菜单2.4. 添加分割线2.5. 添加图标 3. 内存泄漏问题&#xff1a;总结 前言 在现代软件开发中&#xff0c;用户界面的设计对于提升用户体验至关重要。Q…

【雅特力AT32】串口UART、USART配置和使用方法,数组的阻塞发送函数编写,串口接收中断、回环、重定向

【雅特力AT32】串口UART、USART配置和使用方法&#xff0c;数组的阻塞发送函数编写&#xff0c;串口接收中断、回环、重定向 文章目录 串口配置阻塞发送函数接收中断和串口回环串口重定向附录&#xff1a;Cortex-M架构的SysTick系统定时器精准延时和MCU位带操作SysTick系统定时…

了解CentOS及其基础

什么是CentOS&#xff1f; CentOS&#xff08;Community ENTerprise Operating System&#xff09;是一个社区支持的操作系统&#xff0c;基于Red Hat Enterprise Linux&#xff08;RHEL&#xff09;的源代码。它是免费且开源的&#xff0c;广泛用于服务器环境。 为什么选择C…

深入理解HTTP:工作原理、特性及应用

HTTP&#xff0c;全称Hypertext Transfer Protocol&#xff0c;即超文本传输协议&#xff0c;是互联网上应用最为广泛的一种网络协议。它定义了客户端和服务器之间如何交换信息&#xff0c;以及如何传输超文本和其他内容。HTTP协议的出现极大地推动了互联网的普及和发展&#x…

ARM|DSP+FPGA+NVIDIA AI摄像头定制

信迈拥有高性能的摄像头全栈能力&#xff1a;掌握车载模组光学设计能力&#xff0c;具有多名经验丰富光学设计专家&#xff1b;具备丰富的车载摄像模组硬件设计经验&#xff1b;掌握目前市面上大部分车载平台的ISP图像画质服务能力&#xff0c;能自主开发图像ISP和增强算法&…

第十二章 网络编程

第十二章 网络编程 网络协议概述 通信协议&#xff1a; 协议即规则&#xff0c;就好比汽车上路要遵守交通规则一样&#xff0c;为了使全世界不同类型的计算机都可以连接起来&#xff0c;所以制定了一套全球通用的通信协议——Internet协议。有了Internet协议&#xff0c;任何…

【mysql】【docker】mysql8-互为主从

&#x1f338;&#x1f338; Linux/docker-compose/mysql8 互为主从 优雅部署 &#x1f338;&#x1f338; 记录下两台Linux的mysql需要热备份&#xff0c;互为主从&#xff0c;后期加上keepalived实现高可用切换 参考博客&#xff1a;答 案 &#x1f338; 一、准备文件 这里…

图形学初识--直线插值算法

文章目录 为什么需要插值算法&#xff1f;插值算法是什么&#xff1f;有哪些常见的插值算法呢&#xff1f;1. 线性插值&#xff08;Linear Interpolation&#xff09;2. 多项式插值&#xff08;Polynomial Interpolation&#xff09;3. 样条插值&#xff08;Spline Interpolati…

Blazor 下支持 Azure AD 的多套登录方案

比如上图配置了两套不同的登录方案&#xff0c;各有自己的 TenantId 和 ClientId &#xff0c;要同时支持他们的登录&#xff08;其实在同一套 TenantId 和 ClientId 里面配置多个登录账户不就好了&#xff0c;但是......那套登录的管理是在客户自己的Azure AD账户管理下的&…

SpringBoot3 解决NoResourceFoundException: No static resource favicon.ico.异常

SpringBoot3 解决NoResourceFoundException: No static resource favicon.ico.异常 spring boot3项目中浏览器中访问报错找不到favicon.ico&#xff0c;虽然不影响使用&#xff0c;用api工具也可以忽略这个异常&#xff0c;但是防止浏览器访问时出现异常干扰日志&#xff0c;所…

oracle数据库解析过高分析

解析非常高&#xff0c;通过时间模型可以看到解析占比非常高 解析大致可以分为硬解析&#xff08; hard parse&#xff09;、软解析&#xff08; soft parse&#xff09;和软软解析&#xff08; soft soft parse&#xff09;。如&#xff0c;执行一条 SQL 的时候&#xff0c;如…

星型模型和雪花模型的区别

星型模型和雪花模型都是数据仓库设计中常用的维度建模方法&#xff0c;它们之间的主要区别在于数据组织结构、数据冗余度、查询效率、可扩展性和正规化程度等方面&#xff1a; 星型模型 结构特点&#xff1a;星型模型中&#xff0c;一个中心的事实表连接多个维度表&#xff0…

在电脑中,Apple Mobile Device Support程序是什么?

Apple Mobile Device Support 是一项关键的后台服务&#xff0c;它为 Windows 用户提供了与苹果 iOS 设备&#xff08;包括 iPhone、iPad 和 iPod&#xff09;顺畅互动的能力。这项服务的核心功能是为iTunes软件提供必要的支持&#xff0c;使得用户能够将他们的移动设备与电脑连…

Google Find My Device:科技守护,安心无忧

在数字化的时代&#xff0c;我们的生活与各种智能设备紧密相连。而 Google Find My Device 便是一款为我们提供安心保障的实用工具。 一、Find My Decice Netword的定义 谷歌的Find My Device Netword旨在通过利用Android设备的众包网络的力量&#xff0c;帮助用户安全的定位所…